CORRECÇÃO: O serviço de distribuição podem ignorar algumas linhas quando configurar uma replicação transaccional que utiliza a "-SkipErrors" parâmetro no SQL Server 2005

Traduções de Artigos Traduções de Artigos
Artigo: 938671 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando configura uma replicação transaccional que utiliza o -SkipErrors parâmetro no Microsoft SQL Server 2005, o serviço de distribuição pode ignorar algumas linhas. Este comportamento faz com que um problema de inconsistência de dados entre o publisher e os subscritores.

Além disso, quando este problema ocorre, o serviço de distribuição poderá apresentar as seguintes mensagens:
05-007-18 22:49:38.195 o processo não conseguiu concluir última secção no modo de transmissão em sequência multi, foi reposto para o modo de ligação único e é repetir a operação.

05-007-18 22:49:38.273 1 Ignorado (s) quando a aplicação de transacções no subscritor. transacção (ões 007-05-18 22:49:38.367 101) com 100 command(s) foram entregues.

transacção (ões 007-05-18 22:49:38.477 100) com 100 command(s) foram entregues. 007-05-18 22:49:38.570 Ignorado (s 1) quando a aplicação de transacções no subscritor.

transacção (ões 007-05-18 22:49:38.664 100) com 100 command(s) foram entregues.

Resolução

A correcção para este problema foi disponibilizada pela primeira vez na actualização cumulativa 2. Para obter mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005 Service Pack 2, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
936305Pacote de actualização cumulativa 2 para o SQL Server 2005 Service Pack 2
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento. A Microsoft recomenda que considerar a aplicação a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
937137Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 2
As correcções Microsoft SQL Server 2005 são criadas para service packs do SQL Server específicos. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 2 para uma instalação do SQL Server 2005 Service Pack 2. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

Ponto Da Situação

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

Mais Informação

Por predefinição, quando o serviço de distribuição encontra um erro, o serviço de distribuição deve ser parado. Se utilizar o parâmetro ?SkipErrors para erros específicos, o serviço de distribuição ignora os erros e continua a processar transacções sucessivas.

Passos para reproduzir o problema

  1. Configurar 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"
    
    Nota O marcador de posição SQL_server representa o nome da instância do SQL Server.
  3. Repare que os dados não foi replicados na base de dados subscritor.

Propriedades

Artigo: 938671 - Última revisão: 1 de agosto de 2007 - Revisão: 1.4
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • 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á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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 938671

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com