Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Essa semana me deparei com um cenário bem particular em um de nossos clientes. O cliente utiliza replicação transacional e desabilitou nas propriedades da publicação a opção "Replicate Schema Changes", conforme imagem abaixo:
Para habilitar ou desabilitar esta propriedade, podemos utilizar o SSMS, conforme imagem acima, ou utilizar a procedure sp_changepublication como no script abaixo:
DECLARE @publication AS sysname
SET @publication = N'ReplTesteDropColumn'
USE AdventureWorks2016
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0 -- disable
GO
Por padrão esta opção é "true" e quando esta propriedade está habilitada, comandos DDL como ALTER TABLE, ALTER PROCEDURE e ALTER FUNCTION são replicados para os assinantes.
Como essa opção estava desabilitada (false) o cliente esperava que nenhum comando DDL fosse replicado, porém, eles notaram que um ALTER TABLE com DROP COLUMN foi sincronizado para os assinantes.
Analisando a documentação da propriedade "Replicate Schema Changes" verificamos que o ALTER TABLE com DROP COLUMN é uma excessão; portanto, independente dessa propriedade estar habilitada ou não, o ALTER TABLE com DROP COLUMN será replicado para os assinantes.
Pra ficar no radar :)
Referência adicional:
/en-us/sql/relational-databases/replication/publish/replicate-schema-changes
Silas