REVISIÓN: El agente de distribución puede omitir algunas filas cuando configura la duplicación transaccional que utiliza el "-SkipErrors" parámetro en SQL Server 2005

Seleccione idioma Seleccione idioma
Id. de artículo: 938671 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Al configurar la duplicación transaccional que utiliza el -SkipErrors parámetro en Microsoft SQL Server 2005, el agente de distribución puede omitir algunas filas. Este comportamiento hace que un problema de incoherencia de datos entre el publicador y los suscriptores.

Además, cuando se produce este problema, el agente de distribución puede mostrar los mensajes siguientes:
007-05-18 22:49:38.195 El proceso no pudo completar el último lote en modo de transmisión múltiple, que se ha restablecido a modo de conexión único y está reintentando la operación.

007-05-18 22:49:38.273 Omitidos 1 errores al aplicar transacciones en el suscriptor. 007-05-18 22:49:38.367 101 transacciones con 100 comandos se entregaron.

007-05-18 22:49:38.477 100 transacciones con 100 comandos se entregaron. 007-05-18 22:49:38.570 Omitió 1 errores al aplicar transacciones en el suscriptor.

007-05-18 22:49:38.664 100 transacciones con 100 comandos se entregaron.

Solución

La corrección para este problema se publicó por primera vez en actualización acumulativa 2. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
936305Paquete de actualización acumulativa 2 para SQL Server 2005 Service Pack 2
Nota Como las compilaciones son acumulativas, cada versión de revisión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior de SQL Server 2005. Microsoft recomienda que considere aplicar la versión de revisión más reciente que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para los service Pack específicos de SQL Server. Debe aplicar una revisión de SQL Server 2005 Service Pack 2 a una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier revisión suministrada en un service pack se incluye en el siguiente service pack.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

De forma predeterminada, cuando el agente de distribución encuentra un error, debe detener el agente de distribución. Si utiliza el parámetro de ?SkipErrors errores específicos, el agente de distribución omite los errores y continúa procesar transacciones sucesivas.

Pasos para reproducir el problema

  1. Configurar un entorno de replicación. 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 marcador de posición SQL_server representa el nombre de la instancia de SQL Server.
  3. Observe que los datos no se ha replicado a la base de datos de suscriptor.

Propiedades

Id. de artículo: 938671 - Última revisión: miércoles, 1 de agosto de 2007 - Versión: 1.4
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbexpertiseinter kbqfe KB938671 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 938671

Enviar comentarios

 

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