Репликация секционированных таблиц и индексов
Секционирование делает большие таблицы и индексы более управляемыми, так как позволяет быстро и эффективно получать доступ к подмножествам данных и управлять ими, при этом сохраняя целостность всей коллекции данных. Дополнительные сведения см. в разделе Секционированные таблицы и индексы. Репликация поддерживает секционирование, предоставляя набор свойств, которые указывают, как работать с секционированными таблицами и индексами.
Свойства статьи для репликации слиянием и репликации транзакций
В таблице перечислены объекты, применяемые для секционирования данных.
Объект |
Создан с помощью |
---|---|
Секционированная таблица или индекс |
CREATE TABLE или CREATE INDEX |
Функция секционирования |
CREATE PARTITION FUNCTION |
Схемы секционирования |
CREATE PARTITION SCHEME |
Первый набор свойств, связанных с секционированием, — параметры схемы статьи, определяющие, следует ли копировать секционирующие объекты на подписчик. Эти параметры схемы могут быть установлены следующими способами.
На странице Свойства статьи мастера создания публикаций или в диалоговом окне «Свойства публикации». Чтобы копировать объекты, перечисленные в предыдущей таблице, задайте значение true для свойств Копировать схемы секционирования таблиц и Копировать схемы секционирования индекса. Сведения о доступе к странице Свойства статьи см. в разделе Как просмотреть и изменить свойства публикации и статьи (среда SQL Server Management Studio).
С помощью параметра schema_option одной из следующих хранимых процедур:
sp_addarticle или sp_changearticle для репликации транзакций;
sp_addmergearticle или sp_changemergearticle для репликации слиянием.
Чтобы копировать объекты, перечисленные в предыдущей таблице, выберите соответствующие значения параметров схемы. Дополнительные сведения об указании параметров схемы см. в разделе Как задать параметры схемы (программирование репликации на языке Transact-SQL).
Репликация копирует объекты на подписчик во время начальной синхронизации. Если схема секционирования использует файловые группы, отличные от 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 для таблицы, для которой включена репликация слиянием, удалите эту таблицу из публикации.