Как я перемещаю таблицу в конкретный FileGroup в SQL Server 2008

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

Слияние:

CREATE OR REPLACE FUNCTION mergesort(A double precision[]) 
RETURNS double precision[] AS $
    SELECT 
        CASE WHEN 1 < array_length(A,1) 
              THEN merge(mergesort(A[1:floor((1+array_length(A,1))/2)::integer]),
                         mergesort(A[floor((1+array_length(A,1))/2)::integer+1:array_length(A,1)]),
                         1,
                         1,
                         ARRAY[]::double precision[])
             ELSE A
        END;
$ LANGUAGE SQL;

Слияние:

CREATE OR REPLACE FUNCTION merge(A1 double precision[],A2 double precision[], i integer, j integer,acc double precision[]) 
RETURNS double precision[] AS $
    SELECT 
        CASE WHEN (i > array_length(A1,1) and j > array_length(A2,1)) THEN acc
             WHEN i > array_length(A1,1) THEN merge(A1,A2,i,j+1,array_append(acc,A2[j]))
             WHEN j > array_length(A2,1) THEN merge(A1,A2,i+1,j,array_append(acc,A1[i]))
             WHEN A1[i] <  A2[j] THEN merge(A1,A2,i+1,j,array_append(acc, A1[i]))
             WHEN A1[i] >= A2[j] THEN merge(A1,A2,i,j+1,array_append(acc, A2[j]))                
        END;
$ LANGUAGE SQL;
17
задан marc_s 24 December 2013 в 08:11
поделиться

2 ответа

Что-то вроде этого должно помочь:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields)
    WITH (DROP_EXISTING = ON) ON [NewFilegroup]
25
ответ дан 30 November 2019 в 12:20
поделиться

Существует два пути; один от SSMS и другого использования TSQL.

От SQL Server 2008 заказывает онлайн:

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

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

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

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

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

  • На диалоговом окне Index Properties выберите страницу устройства хранения данных.

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

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

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

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

  • Разверните Базы данных, разверните базу данных, содержащую таблицу, и затем нажмите Tables.
  • В Панели щелкните правой кнопкой по таблице и затем нажмите Design Table.
  • Щелкните правой кнопкой по любому столбцу и затем нажмите Properties.
  • На вкладке Tables, в списке Группы файлов Таблицы, выбирают группу файлов, в которую можно поместить таблицу.
  • Дополнительно, в текстовом списке Группы файлов, выберите группу файлов, в которую можно поместить любой текст, изображение и столбцы текста.]

Более эффективный путь

создать кластерный индекс на таблице. Если таблица уже имеет кластерный индекс, можно использовать команду CREATE INDEX С пунктом DROP_EXISTING, чтобы воссоздать кластерный индекс и переместить ее в конкретную группу файлов. Когда таблица имеет кластерный индекс, уровень листа индекса и страницы данных таблицы по существу становятся одними и теми же. Таблица должна существовать, где кластерный индекс существует, поэтому если Вы создаете или воссоздаете кластерный индекс — размещение индекса на конкретной группе файлов — Вы перемещаете таблицу в новую группу файлов также.

Кредит: Brian Moran

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

7
ответ дан 30 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: