如何重新创建具有相同设置的索引?

Zik*_*ato 4 index t-sql sql-server-2017

我想向现有索引添加另一个包含的列,但保持其余设置(例如 FILLFACTOR、ONLINE、SORT_IN_TEMPDB 等)相同。

  • 我在源代码管理中没有以前的版本
  • 我没有在 sys.indexes DMV 中找到它们中的大部分(FILLFACTOR 在那里,但不是 ONLINE)
  • 在对象资源管理器中查找索引并编写它的脚本会填充 ONLINE 设置的默认值(并省略 DATA_COMPRESSION)
  • 我没有在 OBJECTPROPERTY DMF 中找到该属性
  • Brent Ozar 的 sp_BlitzIndex 也不提供其中一些高级设置
  • sp_helpindex 为我提供与 sp_help 在父表上相同的有限信息。
  • 我无法测试 WITH (DROP_EXISTING = ON) 是否使用相同的设置重新创建索引,因为我在任何地方都找不到设置。

有任何想法吗?

Geo*_*e K 5

您可能应该Tools-Options-SQL Server Object Explorer-ScriptingSSMS菜单中使用脚本选项。

在那里,您可以定义要编写脚本的内容和不希望编写的内容。Compression在那儿。

至于其他属性 - 看看这个 StackOverflow问题 - 它可能会有所启发:

SORT_IN_TEMPDB不是索引的属性,而是您可以指定的选项,说明如何创建索引。一旦索引存在(即 create index 语句完成),无论是否SORT_IN_TEMPDB在创建时指定都不会存储在任何地方,因为这无关紧要。