Как переместить таблицу в определенную файловую группу в 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 .....

Другие вопросы по тегам