gpt4 book ai didi

sql-server - 将所有非聚集索引移动到 SQL Server 中的另一个文件组

转载 作者:行者123 更新时间:2023-12-02 05:04:15 24 4
gpt4 key购买 nike

在 SQL Server 2008 中,我想将数据库中的所有非聚集索引移动到辅助文件组。最简单的方法是什么?

最佳答案

运行此updated script创建一个名为 MoveIndexToFileGroup 的存储过程。此过程将表上的所有非聚集索引移动到指定的文件组。它甚至支持其他一些脚本不支持的 INCLUDE 列。此外,它不会重建或移动所需文件组上已有的索引。创建过程后,按如下方式调用它:

EXEC MoveIndexToFileGroup @DBName = '<your database name>',
@SchemaName = '<schema name that defaults to dbo>',
@ObjectNameList = '<a table or list of tables>',
@IndexName = '<an index or NULL for all of them>',
@FileGroupName = '<the target file group>';

要创建一个脚本来为数据库中的每个表运行此脚本,请将查询输出切换为文本,然后运行此脚本:

SELECT 'EXEC MoveIndexToFileGroup '''
+TABLE_CATALOG+''','''
+TABLE_SCHEMA+''','''
+TABLE_NAME+''',NULL,''the target file group'';'
+char(13)+char(10)
+'GO'+char(13)+char(10)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_SCHEMA, TABLE_NAME;

请引用原文blog更多细节。我没有编写此过程,但根据博客的回复对其进行了更新,并确认它适用于 SQL Server 2005 和 2008。

更新

  1. @psteffek modified the script来处理 SQL Server 2012。我合并了他的更改。
  2. 当您的表启用了 IGNORE_DUP_KEY 选项时,该过程会失败。目前还没有解决这个问题。
  3. @srutzky 指出该过程不能保证保留索引的顺序,并就如何修复它提出了建议。我相应地更新了程序。
  4. ojiNY注意到该过程省略了索引过滤器(为了与 SQL 2005 兼容)。根据他的建议,我将它们重新添加了进去。

关于sql-server - 将所有非聚集索引移动到 SQL Server 中的另一个文件组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4237238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com