Вы когда-нибудь задумывались, возможно ли вносить изменения в схему в репликации SQL Server? Ответ – да! Фактически, репликация SQL Server способна обрабатывать базовые изменения схемы без проблем.
Прежде чем мы углубимся в детали, давайте сначала разберемся, что такое изменения схемы. В SQL Server, операторы DDL (Data Definition Language) используются для создания и изменения структуры объектов базы данных. Это включает такие действия, как добавление или удаление столбцов из таблицы, изменение представлений, процедур, функций и триггеров.
Когда дело доходит до внесения изменений в схему в репликации, это обычно является невмешательством, которое не требует окна обслуживания. Репликация SQL Server поддерживает следующие изменения схемы на опубликованных объектах:
- ALTER TABLE
- ALTER TABLE SET LOCK ESCALATION
- ALTER VIEW
- ALTER PROCEDURE
- ALTER FUNCTION
- ALTER TRIGGER
Давайте посмотрим, как добавить новый столбец в таблицу и включить его в существующую публикацию. Для этого вам нужно использовать следующий синтаксис на издателе:
USE MyPublicationDB GO ALTER TABLE SalesLT.Customer ADD TestColumn1 varchar(50) NULL
По умолчанию изменение схемы будет распространяться на подписчиков при следующей синхронизации. Однако важно отметить, что вы должны установить свойство публикации @replicate_ddl
в значение true. Следует отметить, что изменения схемы, внесенные через графический интерфейс конструктора таблиц в SQL Server Management Studio, могут привести к сбою изменения схемы, так как он пытается удалить и создать таблицу заново.
Аналогично, если вы хотите удалить столбец из опубликованной таблицы, вы можете использовать следующий синтаксис на издателе:
USE MyPublicationDB GO ALTER TABLE SalesLT.Customer DROP COLUMN TestColumn1
Как и при добавлении столбца, изменение схемы будет распространяться на подписчиков при следующей синхронизации.
Важно отметить, что в общем случае изменения схемы не требуют повторной инициализации подписок. Однако могут быть некоторые исключения из этого правила. Если вы не уверены, применимы ли эти исключения к вашей ситуации, пожалуйста, обратитесь к разделу “Внесение изменений в схему баз данных публикации” в документации SQL Server для получения дополнительной информации.
Так что, в следующий раз, когда вам понадобится вносить изменения в схему в репликации SQL Server, будьте уверены, что это действительно возможно и может быть сделано без каких-либо серьезных нарушений.