REVISIÓN: Error de paso de trabajo si primero INSERT del proceso detecta un error de mensaje 3604

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.

295032
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Nº DE ERROR: 351328 (SHILOH_BUGS)
Nº DE ERROR: 100729 (SQLBUG_70)
Síntomas
Si un trabajo contiene una única instrucción INSERT en una tabla que tiene un índice único con la cláusula IGNORE_DUP_KEY y INSERT infringe la propiedad unicidad del índice, la fila correspondiente no está insertada en la tabla. El paso de trabajo produce un error y vea el mensaje siguiente en el historial del paso de trabajo:
Se omitió la clave duplicada. [SQLSTATE 23000] (Mensaje 3604). Error en el paso.
Dado que la tabla tiene un INDEX UNIQUE con IGNORE_DUP_KEY, debe pasar por alto la instrucción INSERT y debería realizarse correctamente el paso.
Solución
Para resolver este problema, consiga el Service Pack más reciente para SQL Server 2000. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
290211INF: Cómo obtener el Service Pack más reciente de SQL Server 2000
Solución
Si coloca una instrucción SELECT "ficticia" que siempre se ejecuta correctamente (como SELECT 1) justo antes de la instrucción INSERT que se produce el error 3604, el paso se realiza correctamente. Esto se muestra en la sección "Más información".
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:" de este artículo. Este problema se corrigió por primera vez en SQL Server 2000 Service Pack 1.
Más información

Pasos para reproducir este comportamiento

  1. Crear una tabla de prueba en la base de datos pubs y ejecute la siguiente secuencia de comandos para insertar una fila:
    USE pubsCREATE TABLE test(i int)CREATE UNIQUE INDEX uniq_t1_i on test(i) with IGNORE_DUP_KEYINSERT INTO test VALUES(1)					
  2. Crear un trabajo T-SQL en la base de datos de pubs para insertar una fila en la tabla de prueba :
    INSERT INTO pubs..test values(1)					
  3. Ejecutar el trabajo. Se produce un error en la trabajo y el trabajo paso historial muestra el error enumerado en la sección de "Síntomas".
  4. Tenga en cuenta que si agregamos una instrucción correcta después de INSERT que encuentra un error de 3604:
    INSERT INTO pubs..test values(1)INSERT INTO pubs..test values(2)					
    el paso nuevo se produce el siguiente error:
    Se omitió la clave duplicada. [SQLSTATE 23000] (Mensaje 3604) La instrucción asociada no está preparada [SQLSTATE HY007] (error 0). Error en el paso.
  5. Sin embargo, si se agrega una instrucción correcta que tiene produce antes de INSERT se produce el error 3604:
    insert pubs..t1 values(3)insert pubs..t1 values(1)					
    el paso termina correctamente y se vea el siguiente mensaje:
    Se omitió la clave duplicada. [SQLSTATE 23000] (Mensaje 3604). El paso concluyó correctamente.

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 295032 - Última revisión: 01/16/2015 22:17:02 - Revisión: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB295032 KbMtes
Comentarios