Репликация секционированных таблиц и индексов

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

Свойства статьи для репликации слиянием и репликации транзакций

В таблице перечислены объекты, применяемые для секционирования данных.

Объект

Создан с помощью

Секционированная таблица или индекс

CREATE TABLE или CREATE INDEX

Функция секционирования

CREATE PARTITION FUNCTION

Схемы секционирования

CREATE PARTITION SCHEME

Первый набор свойств, связанных с секционированием, — параметры схемы статьи, определяющие, следует ли копировать секционирующие объекты на подписчик. Эти параметры схемы могут быть установлены следующими способами.

Репликация копирует объекты на подписчик во время начальной синхронизации. Если схема секционирования использует файловые группы, отличные от PRIMARY, эти файловые группы должны существовать на подписчике до начальной синхронизации.

После инициализации подписчика изменения данных распространяются на подписчик и применяются к соответствующим секциям. Однако изменения схемы секционирования не поддерживаются. Репликация транзакций и репликация слиянием не поддерживают следующие команды: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME и инструкцию REBUILD WITH PARTITION команды ALTER INDEX. Репликация слиянием не поддерживает инструкции SWITCH PARTITION команды ALTER TABLE, но репликация транзакций ее поддерживает, как описано в следующем разделе. Репликация моментальных снимков не допускает изменений в схеме секционирования, поскольку моментальный снимок повторно инициализируется при каждой синхронизации подписчика с публикацией.

Репликация транзакций и репликация слиянием поддерживают не более 1024 секций на таблицу или индекс.

Поддержка переключения секций при репликации

Одно из главных преимуществ секционирования — способность быстро и эффективно перемещать подмножества данных между секциями. Данные перемещаются командой SWITCH PARTITION. Дополнительные сведения см. в разделе Эффективная передача данных с использованием переключения секций. По умолчанию, если таблица включена для репликации, операции SWITCH PARTITION блокированы по следующим причинам.

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

  • Если определение секционированной таблицы отличается на подписчике и издателе, агент распространителя завершит свою работу ошибкой при попытке применить изменения на подписчике. Это касается и подписчиков SQL Server 2000, поскольку SQL Server 2000 не поддерживает секционированные таблицы.

Несмотря на эти возможные проблемы, переключение секций можно включить при репликации транзакций. Прежде чем включить переключение секций, убедитесь, что все таблицы, участвующие в переключении секций, существуют на издателе и на подписчике и что определения таблиц и разделов совпадают.

Когда секции имеют одинаковую схему секционирования и на издателе, и на подписчике, то можно включить allow_partition_switch вместе с replication_partition_switch, тогда на подписчик будет реплицироваться только секция, определяемая инструкцией SWITCH. Можно также включить allow_partition_switch без репликации DDL. Это может оказаться полезным в тех случаях, когда необходимо вытеснить секцию за предыдущие месяцы, но сохранить реплицированную секцию на подписчике, чтобы оставить резервную копию на следующий год.

ПредупреждениеВнимание!

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

Включение переключения секций

Следующие свойства публикации транзакций позволяют пользователям управлять переключением секций в реплицируемой среде.

  • @allow_partition_switch. Если его значение равно true, команду SWITCH PARTITION можно выполнять в базе данных публикации.

  • Свойство @replicate_partition_switch определяет, реплицировать ли инструкцию DDL SWITCH PARTITION на подписчик. Этот параметр доступен, если свойство @allow_partition_switch имеет значение true.

Эти свойства можно задать с помощью хранимой процедуры sp_addpublication при создании публикации или с помощью процедуры sp_changepublication после создания публикации. Как уже отмечалось, репликация слиянием не поддерживает переключение секций. Чтобы выполнить команду SWITCH PARTITION для таблицы, для которой включена репликация слиянием, удалите эту таблицу из публикации.

См. также

Основные понятия