我想重建一个给定数据库中的所有索引,其中索引中的记录数小于某个计数就说100k
我如何编写这样的SQL Server 2014查询?
非常非常答案 0 :(得分:1)
一个小小的PowerShell有很长的路要走
import-module sqlps;
$srv = new-object microsoft.sqlserver.management.smo.server 'your-server';
$db = $srv.databases['your-db'];
foreach ($tbl in $db.Tables) {
foreach ($idx in $tbl.Indexes) {
foreach ($prtn in $idx.PhysicalPartitions) {
if ($prtn.RowCount -gt 100000) {
if ($idx.IsPartitioned) {
$idx.Rebuild($prtn.PartitionNumber);
}
else {
$idx.Rebuild();
}
}
}
}
}
如果要重建,当且仅当索引的聚合行数高于阈值时,将所有分区的rowcount加在一起,如果超过阈值,则在索引上调用rebuild()。 / p>