DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 938671 - Última revisão: quarta-feira, 1 de agosto de 2007 - Revisão: 1.4

 

Nesta página

Sintomas

Quando você configura uma replicação transacional que usa o -SkipErrors parâmetro no SQL Server 2005, o agente de distribuição pode ignorar algumas linhas. Esse comportamento faz com que um problema de inconsistência de dados entre o publisher e os assinantes.

Além disso, quando esse problema ocorre, o agente de distribuição pode exibir as seguintes mensagens:
05-007-18 22:49:38.195 o processo falha ao concluir último lote no modo de fluxo contínuo multi, ele foi redefinido para modo de conexão única e está repetindo a operação.

05-007-18 22:49:38.273 1 Ignorado erros ao aplicar transações no assinante. 05-007-18 22:49:38.367 101 transações com 100 comandos foram entregues.

05-007-18 22:49:38.477 100 transações com 100 comandos foram entregues. 05-007-18 22:49:38.570 Ignorados 1 erro (s) ao aplicar transações no assinante.

05-007-18 22:49:38.664 100 transações com 100 comandos foram entregues.

Resolução

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 2. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas para o SQL Server 2005 Service Pack 2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
936305  (http://support.microsoft.com/kb/936305/LN/ ) Pacote de atualizações cumulativas 2 para SQL Server 2005 Service Pack 2
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções de segurança foram incluídas com o anterior SQL Server 2005 corrigir lançamento. A Microsoft recomenda que você considere a aplicação a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
937137  (http://support.microsoft.com/kb/937137/LN/ ) Compilações do SQL Server 2005 lançados após o SQL Server 2005 Service Pack 2 foi lançado
Os hotfixes do Microsoft SQL Server 2005 são criados para service packs do SQL Server específicos. Você deve aplicar um hotfix do SQL Server 2005 Service Pack 2 para uma instalação do SQL Server 2005 Service Pack 2. Por padrão, qualquer hotfix fornecidas em um SQL Server service pack está incluído no service pack seguinte do SQL Server.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Por padrão, quando o Distribution Agent encontra um erro, o Distribution Agent deve ser interrompido. Se você usar o parâmetro –SkipErrors para erros específicos, o Distribution Agent ignora esses erros e continua a processar transações sucessivas.

Etapas para reproduzir o problema

  1. Configure um ambiente de replicação. To do this, run the following scripts in SQL Query Analyzer.
    use master
    go
    exec sp_adddistributor  @distributor = @@SERVERNAME
    go
    exec sp_adddistributiondb  @database = 'distribution'
    go
    exec sp_adddistpublisher  @publisher = @@SERVERNAME, @distribution_db = 'distribution'
    go
    exec sp_replicationdboption pubdb, publish, false
    go
    exec sp_replicationdboption subdb, publish, false
    go
    if db_id('pubdb') is not null
        drop database pubdb
    go
    create database pubdb
    go
    if db_id('subdb') is not null
        drop database subdb 
    go
    create database subdb
    go
    exec sp_replicationdboption pubdb, publish, true
    go
    use pubdb
    go
    create table t(c1 int primary key, c2 int, c3 sysname null, c4 nchar(200) default 'a')
    go
    create unique index c2_idx on t(c2)
    go
    sp_addpublication @publication = 'p1', @status = 'active'
    go
    sp_addarticle @publication = 'p1', @article = 'a1', @source_table = 't', @schema_option = 0x00000000000300f3
    go
    sp_addsubscription @publication = 'p1', @article = 'all', @subscriber = @@servername, @destination_db = 'subdb'
    go
    
  2. Save the following command as a batch file, and then run the file to insert data.
    c: pushd "c:\program files\microsoft sql server\90\com\" del dist.out
    call snapshot.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1
    call logread.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 
    call distrib.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1 -subscriber %COMPUTERNAME% -subscriberdb subdb 
    start cmd.exe /s /k "logread.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -continuous"
    start cmd.exe /s /k "distrib.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1 -subscriber %COMPUTERNAME% -subscriberdb subdb -subscriptionstreams 8 -SkipErrors 2601:2627 -Output dist.out -OutputVerboseLevel 2 -continuous"
    popd
    osql -E -S[SQL_server] -Q"insert subdb..t (c1, c2) values (1000, 1000)"
    osql -E -S[SQL_server] -Q"insert subdb..t (c1, c2) values (2500, 1015)"
    osql -E -S[SQL_server] -Q"begin tran declare @v int select @v = 1 while (@v < 1020) begin insert pubdb..t (c1, c2) values (@v, @v) select @v = @v + 1 end commit tran"
    osql -E -S[SQL_server] -Q"declare @v int select @v = 3100 while (@v < 3500) begin insert pubdb..t (c1, c2) values (@v, @v) select @v = @v + 1 waitfor delay '0:0:0.10' end"
    
    Observação O espaço reservado SQL_server representa o nome da instância do SQL Server.
  3. Observe que os dados não foi replicados no banco de dados do assinante.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Palavras-chave: 
kbmt kbexpertiseinter kbqfe KB938671 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 938671  (http://support.microsoft.com/kb/938671/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store