如何在sql中备份统计信息?

时间:2017-10-02 03:23:02

标签: sql-server ssms

我们只是说我在SSMS中有一张表A,上面有一些数据。有子表,如列,约束,触发器,索引和统计等。

我想创建一个与表A具有相同属性的类似表。我知道我需要转到脚本表As->创建To->用于复制表结构的新查询窗口。

然而,在这样做之后,我意识到当表A中有统计数据时,我新表中的统计数据是空的。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

你可以使用以下的powershell(我从我的一篇旧博文中找到)来编写统计信息blob的脚本:

pushd;
import-module sqlps -disablenamechecking;
popd;

$opts = new-object Microsoft.SqlServer.Management.SMO.ScriptingOptions;
$opts.OptimizerData = $true;

$server = new-object Microsoft.SqlServer.Management.SMO.Server ".";
$database = $server.Databases["AdventureWorks2008R2"];

foreach ($table in $database.Tables) {
    foreach ($stat in $table.Statistics) {
        $stat.Script($opts);
    }
}

上面将编写AdventureWorks2008R2数据库中所有表的所有统计信息(包括直方图数据)。你应该能够根据自己的需要定制它。