No SQL 2008 R2, vou atualizar uma tabela que afetará 25 milhões de linhas, a tabela está atualmente replicada (replicação transacional). Para minimizar o impacto na replicação, posso criar um procedimento armazenado, agrupar a instrução de atualização dentro do procedimento armazenado e adicionar este procedimento armazenado para a replicação?
Ao fazer isso quando o procedimento armazenado for executado, ele replicará a execução do procedimento armazenado. Minha pergunta é como o servidor SQL sabe replicar apenas a execução do procedimento armazenado (ou seja, o comando real exec myupateproc t-sql) em vez dos dados da tabela subjacente que estão sendo atualizados no editor (ou seja, na verdade, replicando a instrução de atualização de 25 milhões)?
como o servidor SQL sabe replicar apenas a execução do procedimento armazenado (ou seja, o comando real exec myupateproc t-sql) em vez dos dados da tabela subjacente que estão sendo atualizados no editor (ou seja, na verdade, replicando a instrução de atualização de 25 milhões)?
O SQL Server sabe disso quando você configura a propriedade do artigo conforme abaixo:
Você pode definir explicitamente apenas para replicar a definição do SP, a execução do SP ou a execução em uma transação serializada do SP ao configurar a propriedade do artigo.
Consulte aqui . Quando você seleciona "transação serializada do SP", toda a execução é replicada como uma única transação, reduzindo a sobrecarga da replicação transacional, ou seja, com a replicação da execução do procedimento armazenado, a replicação envia apenas o comando para executar o procedimento armazenado no Assinante, em vez de gravar todas as atualizações no banco de dados de distribuição e enviá-las pela rede para o Assinante
Teste-o antes, pois executar uma atualização tão grande (25 milhões de linhas) será demais para a replicação (dependendo da sua topologia de replicação - mesmo servidor de distribuição como editor, editor e assinantes geograficamente separados, etc.) e algumas ressalvas conforme descrito em BOL .
Você provavelmente pode pensar em outra abordagem como -