我必须将一些表从主文件组移到默认的素数组。我有3个不同的环境,在每个环境中,默认文件组的名称是不同的。因此,我可以将默认文件组名称获取为:
select name from sys.filegroups where is_default=1;现在,在重新创建索引时,我希望使用上面查询的输出来指定要创建索引的文件组(因为默认文件组在不同的环境中有不同的名称,因此,我只希望提升一个查询)。我试过这样做:
CREATE UNIQUE CLUSTERED INDEX PK_INDEX
ON slam.MY_TABLE(COL_1)
WITH (DROP_EXISTING=ON) ON [select name from sys.filegroups where is_default=1];但我面临以下错误:
MSG1921,级别16,状态1,第19行无效的文件组‘从sys.filegroups选择名称,其中指定了is_default=1’。
任何帮助都将不胜感激。
发布于 2018-11-29 09:09:30
为此,您需要使用动态sql。选择默认文件组的名称,构造查询并按如下方式执行:
declare @fg_name nvarchar(250), @sql nvarchar(max);
select @fg_name = name from sys.filegroups where is_default=1;
set @sql = N'CREATE UNIQUE CLUSTERED INDEX PK_INDEX
ON slam.MY_TABLE(COL_1)
WITH (DROP_EXISTING=ON) ON [' + @fg_name + N'];';
exec sp_executesql @sql;https://stackoverflow.com/questions/53535174
复制相似问题