【问题标题】:How create only index script of all tables from database in MS SQL server?如何从 MS SQL 服务器中的数据库中仅创建所有表的索引脚本?
【发布时间】:2020-06-21 08:12:27
【问题描述】:

我想为数据库中的所有索引生成一个脚本(创建索引)。

From database -> Task -> Generate script option get only create table with primary key index。所以我想要其他索引。我们如何在 SQL Server 中生成它。聚簇索引和非聚簇索引需要单独的脚本。

【问题讨论】:

  • 您可以在 SSMS 生成的脚本中包含其他索引,方法是从工具菜单中选择此选项:工具-->选项-->SQL Server Explorer-->脚本-->脚本索引。
  • 感谢@DanGuzman,我在任务-> 生成脚本-> 选择表-> 单击高级选项下获得了此选项。高级脚本选项具有“脚本索引”选项,默认设置为 False,现在我已将“脚本索引”设置为 True 及其工作。

标签: sql sql-server


【解决方案1】:

SSMS 脚本选项是可配置的。要在 SSMS 生成的脚本中包含非约束索引,请在工具-->选项-->SQL Server Explorer-->脚本-->下的工具菜单中将脚本索引选项更改为真。

如果 SSMS 脚本不足以满足您的需求,您可以使用 SMO(例如,通过 PowerShell 或 .NET 代码使用 Scripter)或跨平台的 mssql-scripter 命令行实用程序。

【讨论】:

    【解决方案2】:

    您可以轻松地显示现有索引:

    SELECT * FROM sys.indexes WHERE type_desc='CLUSTERED'
    SELECT * FROM sys.indexes WHERE type_desc='NONCLUSTERED'
    

    当您说要“生成数据库中所有索引的脚本”时,为什么?您的 DDL 应该在创建表时创建所有索引。

    【讨论】:

    • 谢谢,我会再次检查。当我生成脚本时,脚本只包含表和主键索引。
    • 抱歉,它不会自动发生——我的意思是你应该把你的索引创建放在你的 DDL 中,以便从一开始就正确设置一切。
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2014-10-10
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 2017-01-18
    相关资源
    最近更新 更多