Как переместить таблицу в определенную файловую группу в SQL Server 2008
Я только что создал вторичную файловую группу и хочу перенести в нее несколько таблиц, а затем сделать ее доступной только для чтения.
Я не уверен, как это сделать?
я просто использую ALTER blah blah TO MyFileGroup
?
3 ответа
Примерно так должно помочь:
CREATE UNIQUE CLUSTERED INDEX PK_YourTableName
ON dbo.YourTableName(YourPKFields)
WITH (DROP_EXISTING = ON) ON [NewFilegroup]
Есть два пути; один из SSMS, а другой с помощью TSQL.
Из электронной документации по SQL Server 2008:
Чтобы переместить существующий индекс в другую файловую группу или схему разделов
В обозревателе объектов подключитесь к экземпляру компонента SQL Server Database Engine, а затем разверните этот экземпляр.
Разверните Базы данных, разверните базу данных, которая содержит таблицу с указанным индексом, а затем разверните Таблицы.
Разверните таблицу, к которой принадлежит индекс, а затем разверните "Индексы".
Щелкните правой кнопкой мыши индекс, который нужно переместить, и выберите "Свойства".
В диалоговом окне Свойства индекса выберите страницу Хранилище.
Выберите файловую группу, в которую нужно переместить индекс.
Нельзя перемещать индексы, созданные с использованием ограничения уникального или первичного ключа, с помощью диалогового окна "Свойства индекса". Чтобы переместить эти индексы, необходимо удалить ограничение, используя ALTER TABLE (Transact-SQL) с параметром DROP CONSTRAINT, а затем заново создать ограничение для нужной файловой группы, используя ALTER TABLE (Transact-SQL) с параметром ADD CONSTRAINT.
Если таблица или индекс секционированы, выберите схему секционирования, в которой нужно переместить индекс.
[До SQL Server 2008: Поместить существующую таблицу в другую файловую группу (SSMS)
- Разверните Базы данных, разверните базу данных, содержащую таблицу, а затем нажмите Таблицы.
- В области сведений щелкните правой кнопкой мыши таблицу и выберите команду "Таблица проектирования".
- Щелкните правой кнопкой мыши любой столбец и выберите Свойства.
- На вкладке Таблицы в списке Файловая группа таблиц выберите файловую группу, в которую нужно поместить таблицу.
- При желании в списке "Текстовая файловая группа" выберите файловую группу, в которую можно поместить любой текст, изображение и текстовые столбцы. ]
Более эффективный способ
создать кластерный индекс на столе. Если таблица уже имеет кластеризованный индекс, вы можете использовать предложение WITH DROP_EXISTING команды CREATE INDEX, чтобы воссоздать кластеризованный индекс и переместить его в определенную файловую группу. Когда таблица имеет кластеризованный индекс, конечный уровень индекса и страницы данных таблицы по существу становятся одинаковыми. Таблица должна существовать там, где существует кластеризованный индекс, поэтому, если вы создаете или воссоздаете кластеризованный индекс - размещаете индекс в определенной файловой группе - вы также перемещаете таблицу в новую файловую группу.
Кредит: Брайан Моран
Вы можете создать (или воссоздать) кластерный индекс, указав новую файловую группу для предложения ON, которая будет перемещать таблицу (данные). Но если у вас есть некластеризованные индексы и вы хотите, чтобы они находились в другой файловой группе, вы должны удалить их и создать заново, также указав новую файловую группу в предложении ON. Ссылка
Я согласен с Марком. Перестроить кластер работает хорошо и намного быстрее, чем Tasks->Shrink Database->Files-> Empty file by migrating data to another file.
Индивидуальное создание индексов позволяет контролировать загрузку системы без создания огромных файлов журналов select * into [your.new.table.] from .....