【问题标题】:SQL Server 2008: recreating the same indexes and statistics across different databasesSQL Server 2008:跨不同数据库重新创建相同的索引和统计信息
【发布时间】:2010-12-29 04:01:00
【问题描述】:

我最近被分配了更新“遗留”数据库的任务(之前由一位不久前离开公司的前同事管理)。新数据库的结构与前一个完全相同;唯一的区别在于内容本身,因为这个数据库现在有更新的数据。

问题是旧数据库有很多索引和统计信息,我也必须在新数据库中实现,我担心数据库创建脚本在高速公路上的某个地方丢失了。

因此,我如何(最好使用事务 SQL)在新数据库上重新创建旧索引?

大家好

【问题讨论】:

    标签: sql sql-server-2008 statistics indexing


    【解决方案1】:

    在 SSMS 中,您可以右键单击对象资源管理器中的索引,然后单击“脚本索引为”。然后,您可以针对您的新数据库运行该脚本。

    编辑:

    如果您有多个索引,则无法在 SSMS 2005 中轻松编写所有索引。你可以看看类似这样的脚本:http://www.sqlservercentral.com/scripts/Miscellaneous/31893/

    另一种有趣的方法是使用 C#,请参阅 http://blogs.msdn.com/benjones/archive/2008/08/27/how-can-i-generate-a-t-sql-script-for-just-the-indexes.aspx 示例。

    【讨论】:

    • 确实可以,但是索引和统计的数量相当大;这样做会很痛苦
    【解决方案2】:

    尝试按照以下步骤操作

    • 右键单击数据库并选择Tasks,然后选择Generate Scripts...
    • 再次选择数据库,然后单击下一步 (注意:您可以使用此处底部的复选框并编写数据库中的所有对象并完成 - 节省一些时间!)
    • 向下拖动栏,直到您到达 表格/视图选项
    • 确保脚本索引设置为 True,然后单击下一步
    • 选择需要编写脚本的对象,然后单击下一步
    • 选择要编写脚本的项目
    • 最后选择是否要脚本到文件/剪贴板/查询窗口

    【讨论】:

    • 我只是想向他建议。唯一的事情是我无法获得任何属性组合来仅创建索引。您必须包含 Table Create 语句,据我了解,该表已经存在...
    • 也可以完美运行,而且可能应该以这种方式完成。可惜晚了5m。再次感谢
    【解决方案3】:

    我会考虑投资 Red Gate 工具,它可以很容易地做到这一点(索引、数据和对象可以同步)。

    如果您确实需要两个数据库上完全相同的统计信息,这很难做到,尤其是在您不手动更新统计信息的情况下。我只是担心 Red Gate 可以先同步什么。

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多