首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Server中创建索引时动态添加文件组?

如何在Server中创建索引时动态添加文件组?
EN

Stack Overflow用户
提问于 2018-11-29 09:00:52
回答 1查看 317关注 0票数 0

我必须将一些表从主文件组移到默认的素数组。我有3个不同的环境,在每个环境中,默认文件组的名称是不同的。因此,我可以将默认文件组名称获取为:

代码语言:javascript
复制
select name from sys.filegroups where is_default=1;

现在,在重新创建索引时,我希望使用上面查询的输出来指定要创建索引的文件组(因为默认文件组在不同的环境中有不同的名称,因此,我只希望提升一个查询)。我试过这样做:

代码语言:javascript
复制
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’。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-29 09:09:30

为此,您需要使用动态sql。选择默认文件组的名称,构造查询并按如下方式执行:

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53535174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档