Iam*_*mIC 17 sql-server indexing database-design filegroup
在SQL Server 2008中,我想将数据库中的所有非聚集索引移动到辅助文件组.最简单的方法是什么?
dal*_*man 24
运行此更新的脚本以创建一个名为的存储过程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>';
Run Code Online (Sandbox Code Playgroud)
要创建将为数据库中的每个表运行此脚本的脚本,请将查询输出切换为文本,然后运行以下命令:
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;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅原始博客.我没有写这个程序,但根据博客的回复更新了它,并确认它适用于SQL Server 2005和2008.
IGNORE_DUP_KEY
选项时,该过程将失败.还没有解决这个问题.