原文来自《How to create a SQL Server Clone Statistics Only Database》,有删改
https://www.mssqltips.com/sqlservertip/1999/how-to-create-a-sql-server-clone-statistics-only-database/
有没有办法重现和诊断查询编译和执行计划问题,而无需实际拥有数据或整个数据库?
创建仅有统计信息的数据库克隆,它包含原始数据库的模式和统计信息而无需实际拥有数据或整个数据库。
优点:
提供了一种方法来重现和诊断查询编译和计划问题,对克隆的数据库运行时,查询仍将返回与对原始数据库执行时相同的查询执行计划。克隆数据库的大小远小于原始数据库它不包含任何数据,当需要交给第三方进行测试时,保证了数据安全。
在“高级”选项中,将以下设置从默认值更改为下面显示的值。
以下为2017测试时的实际值
有几点需要注意:
如果使用相同的SQL Server实例,则无需编写登录脚本。如果使用USE DATABASE选项,请确保脚本指向克隆数据库。如果使用“脚本数据库创建”选项,则需要更改脚本以使用克隆数据库的名称而不是原始数据库名称(如果要在同一实例上创建此名称)。除非架构包含除dbo之外的登录所拥有的对象,否则可能不需要“脚本登录”选项和“脚本对象级别权限”选项。可以看到有很多更新统计信息相关的语句
在下面的示例中,我创建了测试数据库WF的克隆。请注意CREATE STATISTICS语句的存在。
我们对克隆数据库检查以下查询的执行计划
select a.* from dbo.tab7 a join dbo.tab7 b on a.c2=b.c2;我们会注意到该计划与拥有数据的数据库完全相同。表tab7在克隆数据库上为空,但优化程序估计为54263.1行
原文:https://www.mssqltips.com/sqlservertip/1999/how-to-create-a-sql-server-clone-statistics-only-database/