Как переместить таблицу в определенную файловую группу в SQL Server 2008 - PullRequest
17 голосов
/ 03 апреля 2009

Я только что создал вторичную файловую группу и хочу переместить в нее несколько таблиц, а затем сделать ее доступной только для чтения.

Я не уверен, как это сделать?

я просто использую ALTER blah blah TO MyFileGroup?

Ответы [ 3 ]

25 голосов
/ 03 апреля 2009

Как-то так должно помочь:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields)
    WITH (DROP_EXISTING = ON) ON [NewFilegroup]
7 голосов
/ 03 апреля 2009

Есть два пути; один из SSMS, а другой с помощью TSQL.

Из электронной документации по SQL Server 2008:

Чтобы переместить существующий индекс в другую файловую группу или раздел схема

  • В обозревателе объектов подключитесь к экземпляру базы данных SQL Server Двигатель, а затем разверните этот экземпляр.

  • Разверните Базы данных, раскройте базу данных, содержащую таблицу, с помощью конкретный индекс, а затем расширить Таблицы.

  • Разверните таблицу, к которой принадлежит индекс, а затем разверните Индексы.

  • Щелкните правой кнопкой мыши индекс, который нужно переместить, и выберите Свойства.

  • В диалоговом окне Свойства индекса выберите страницу Хранилище.

  • Выберите файловую группу, в которую следует переместить индекс.

Вы не можете перемещать индексы, созданные с помощью ограничение уникального или первичного ключа используя диалоговое окно Свойства индекса. Чтобы переместить эти индексы, вам нужно удалить ограничение, используя ALTER TABLE (Transact-SQL) с DROP Опция CONSTRAINT, а затем заново создать ограничение на желаемое файловая группа, использующая ALTER TABLE (Transact-SQL) с ADD CONSTRAINT вариант.

Если таблица или индекс разделены, выберите схему разбиения, в которой переместить указатель.

[До SQL Server 2008: поместить существующую таблицу в другую файловую группу (SSMS)

  • Разверните Базы данных, разверните базу данных, содержащую таблицу, а затем нажмите Таблицы.
  • В области сведений щелкните правой кнопкой мыши таблицу и выберите команду «Таблица проектирования».
  • Щелкните правой кнопкой мыши любой столбец и выберите Свойства.
  • На вкладке Таблицы в списке Файловая группа таблиц выберите файловую группу, в которую нужно поместить таблицу.
  • Дополнительно , в списке Текстовая файловая группа выберите файловую группу, в которую можно поместить любой текст, изображение и текстовые столбцы. ]

Более эффективным способом является

для создания кластеризованного индекса на Таблица. Если таблица уже имеет кластерный индекс, вы можете использовать СОЗДАЙТЕ ИНДЕКС команды С Предложение DROP_EXISTING для воссоздания кластерный индекс и переместить его в конкретная файловая группа. Когда стол имеет кластерный индекс, уровень листьев индекс и страницы данных стол по сути стал одним, а так же. Таблица должна существовать там, где Кластерный индекс существует, так что если вы создать или воссоздать кластерный индекс - размещение индекса на конкретная файловая группа - вы перемещаете таблица для новой файловой группы.

Кредит: Брайан Моран

Вы можете создать (или воссоздать) кластерный индекс, указав новую файловую группу для предложения ON, которая будет перемещать таблицу (данные). Но если у вас есть некластеризованные индексы и вы хотите, чтобы они находились в другой файловой группе, вы должны удалить их и заново создать их, указав новую файловую группу в предложении ON. Ref .

0 голосов
/ 29 марта 2012

Я согласен с Марком. Перестройка кластера работает хорошо и на намного быстрее, чем Задачи-> Сжать базу данных-> Файлы-> Empty file by migrating data to another file.

Индивидуальное создание индексов позволяет контролировать нагрузку на систему, не создавая огромных файлов журналов из select * into [your.new.table.] from .....

...