Как динамически добавлять файловую группу при создании индекса в SQL Server? - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно переместить некоторые таблицы из основной группы файлов в группу простых чисел по умолчанию.У меня есть 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];

Но я сталкиваюсь с ошибкой ниже:

Сообщение 1921, уровень 16, состояние 1, строка 19 Неверная файловая группа 'выберите имя из sys.filegroups гдеis_default = 1 'указано.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 29 ноября 2018

Для этого вам нужно использовать динамический 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;
...