用于自动维护数千个数据库的脚本?

用于自动维护数千个数据库的脚本?

我们有一个 Web 应用程序,出于政府监管的安全原因,要求每个客户都有自己的数据库。因此,我们有几千个小型数据库,它们都具有完全相同的架构(每个数据库目前在 10MB 到 50MB 之间,但永远不会大于约 400MB)

我们有一个程序,可以自动扫描每个数据库,并在主副本发生变化时升级架构,这个程序运行良好。但是,除了夜间备份外,我们没有运行任何脚本维护。

还有什么建议吗?完整性检查、更新统计数据、重建索引?无论我们运行什么,我们都必须确保我们可以轻松地从脚本中获得通过/失败,以便我们可以轻松地报告失败情况,以便在第二天早上进行调查(因为我们不会观看重复数千次的脚本)。

答案1

Powershell 将成为您的好朋友。即兴地说:

$server = new-object "Microsoft.SqlServer.Management.Smo.Server" "your-server-name-here"
foreach ($db in $server.Databases) {
   foreach ($table in $db.Tables) {
      foreach ($index in $table.Indexes) {
         $index.Rebuild()
      }
   }
}

我会不加修改地使用这个脚本吗?不会(首先,它只是盲目地重建实例上每个数据库中的每个表,无论是否需要)。但它向您展示了使用很少的代码就可以实现多么强大的功能。

相关内容