在MSSQL上是否有查询来获取数据库的名称,表的数量,索引的数量,数据库的大小和数据库的所有者?我查看了许多解决方案,但找不到任何解决方案,我也可以在DB上获得索引计数。
答案 0 :(得分:0)
数据库中的表
sp_MSForEachTable 'DECLARE @t AS VARCHAR(MAX);
SELECT @t = CAST(COUNT(1) as VARCHAR(MAX))
+ CHAR(9) + CHAR(9) + ''?'' FROM ? ; PRINT @t'
答案 1 :(得分:0)
是。您可以像这样从SQL执行所有这些操作:
获取数据库名称:
select DB_NAME()
获取表格数量:
select count(*) from sys.tables
获取索引数:
select count(*) from sys.indexes
获取使用的空间量:
exec sp_spaceused
获取数据库所有者的用户名:
select distinct suser_sname( owner_sid ) from sys.databases
答案 2 :(得分:0)
我倾向于使用Powershell来做这样的事情。以下是我对它的看法:
push-location;
import-module sqlps -disablenamechecking;
pop-location;
$s = new-object microsoft.sqlserver.management.smo.server 'yourServer';
foreach ($db in $s.Databases | where {$_.IsAccessible -eq $true} ) {
$r = @{TableCount = 0;
IndexCount = 0;
Name = $db.Name;
Size = $db.Size
}
$table_count = 0;
$index_count = 0;
foreach ($table in $db.Tables) {
$r.TableCount += 1;
$r.IndexCount += $table.Indexes.Count
}
$r | select-object @{name='name';expression={$_.name}},
@{name='size';expression={$_.size}},
@{name='TableCount';expression={$_.TableCount}},
@{name='IndexCount';expression={$_.IndexCount}};
}