Compartilhar via


Artigos transacionais – Gerar novamente para refletir as alterações de esquema

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Por padrão, a replicação transacional faz todas as alterações de dados nos Assinantes por meio de um conjunto de procedimentos armazenados gerados por procedimentos internos para cada artigo de tabela na publicação. Os três procedimentos (um de cada para inserir, atualizar e excluir) são copiados para o Assinante e executados quando uma inserção, atualização ou exclusão for replicada para o Assinante. Quando uma alteração de esquema é feita em uma tabela do Publicador do SQL Server, a replicação regenera esses procedimentos automaticamente, chamando o mesmo conjunto de procedimentos de script interno, de modo que os novos procedimentos correspondam ao novo esquema (a replicação de alterações de esquema não tem suporte para Publicadores Oracle).

Também é possível especificar procedimentos personalizados para substituir um ou mais procedimentos padrão. Os procedimentos personalizados devem ser alterados se a alteração do esquema afetar o procedimento. Por exemplo, se um procedimento fizer referência a uma coluna descartada em uma alteração de esquema, as referências à coluna deverão ser removidas do procedimento. Há dois modos para que a replicação propague um novo procedimento personalizado aos Assinantes:

  • A primeira opção é usar um procedimento de script personalizado para substituir os padrões usados pela replicação:

    1. Ao executar sp_addarticle (Transact-SQL), verifique se o bit 0x02 de @schema_option é true.

    2. Execute sp_register_custom_scripting (Transact-SQL) e especifique um valor igual a 'insert', 'update' ou 'delete' para o parâmetro @typee o nome do procedimento de script personalizado para o parâmetro @value.

    Na próxima alteração de esquema, a replicação chamará esse procedimento armazenado para substituir a definição pelo novo procedimento armazenado personalizado definido pelo usuário e depois propagará o procedimento para cada Assinante.

  • A segunda opção é usar um script que contenha uma nova definição de procedimento personalizada:

    1. Ao executar sp_addarticle (Transact-SQL), defina o bit 0x02 de @schema_optioncomo false, de modo que a replicação não gere automaticamente procedimentos personalizados no Assinante.

    2. Antes de cada alteração de esquema, crie um novo arquivo de script e registre o script com replicação executando sp_register_custom_scripting (Transact-SQL). Especifique um valor igual a 'custom_script' para o parâmetro @type e o caminho para o script no Publicador para o parâmetro @value.

    Na próxima vez em que for feita uma alteração de esquema relevante, esse script será executado em cada Assinante dentro da mesma transação como o comando DDL. Após concluir a alteração de esquema, o registro do script será removido. Você deve registrar de novo o script para que ele seja executado depois de uma alteração de esquema subsequente.