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

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

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

  • щелкните правой кнопкой мыши индекс для перемещения и выберите Свойства.

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

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

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

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

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

  • разверните узел базы данных, разверните базу данных, содержащую таблицу, и нажмите кнопку таблицы.
  • в области сведений щелкните таблицу правой кнопкой мыши и выберите команду таблица конструктора.
  • щелкните правой кнопкой мыши любой столбец и выберите пункт Свойства.
  • на вкладке таблицы в списке файловая группа таблицы выберите файловую группу, в которую таблица.
  • дополнительно в списке текстовая файловая группа выберите файловую группу, в которую будут помещены столбцы текста, изображения и текста. ]

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

для создания кластеризованного индекса на таблица. Если в таблице уже есть кластеризованный индекс, вы можете использовать Создать команду INDEX с помощью Предложение drop_existing воссоздать кластеризованный индекс и переместить его в конкретной группе. Когда таблица имеет ля кластеризованный индекс, уровень листа индекс и страницы данных таблица, по сути, стал одним и тот же. Таблица должна существовать там, где кластеризованный индекс существует, поэтому если вы создание или воссоздание кластера index-размещение индекса на a особую группу вы двигаетесь таблица для новой файловой группы.

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

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


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

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