REVISIÓN: Mensaje de error de SQL Server 2008 cuando ejecuta una instrucción INSERT SELECT en una tabla: "infracción de restricción PRIMARY KEY '<primarykey>'. <tablename>No se puede insertar clave duplicada en el objeto '<nombretabla>' "

Seleccione idioma Seleccione idioma
Id. de artículo: 970507 - Ver los productos a los que se aplica este artículo
Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas con la anterior de SQL Server 2008.
Expandir todo | Contraer todo

En esta página

Síntomas

Tenga en cuenta la situación siguiente:
  • Tiene Microsoft SQL Server 2008 instalado en un equipo multiprocesador.
  • Tiene una instrucción INSERT SELECT en una tabla que contiene una clave principal.

    Nota En la instrucción INSERT SELECT , la tabla que recibe los datos es la misma tabla que envía los datos. Por ejemplo:
    INSERT T1 ? SELECT T1
  • Hacer referencia a otras tablas en esta instrucción INSERT SELECT . Estas referencias incluyen una tabla temporal.

    Nota Se hace referencia a las tablas en la cláusula FROM o las tablas se hace referencia en una condición subconsulta o combinación.
Cuando ejecute la instrucción, recibirá el siguiente mensaje de error:

Msj 2627, nivel 14, estado 1
Infracción de restricción PRIMARY KEY ' PrimaryKey '. No se puede insertar clave duplicada en el objeto ' TableName '.

Si examina el plan de ejecución, verá que el operador JOIN y el operador Cola inmediata ejecutarán en paralelo. Este operador Cola inmediata está bajo el operador JOIN . Además, la tabla que recibe los datos en la instrucción es la tabla interna de la combinación.

Nota Este problema se produce cuando se ejecuta la instrucción SELECT de UPDATE o la instrucción DELETE SELECT .

Causa

Este problema se produce debido a un error en la cola para el operador Cola inmediata donde la cola de impresión genera más filas de lo esperado. Este comportamiento hace que un problema de clave duplicado.

Solución

Información de actualización acumulativa

La corrección para este problema se publicó por primera vez en actualización acumulativa 3 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
971491Paquete de actualización acumulativa 3 para SQL Server 2008 Service Pack 1
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 con la anterior de SQL Server 2008. 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:
970365Compilaciones de SQL Server 2008 publicados después SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 se crean las revisiones para los service Pack específicos de SQL Server. Debe aplicar una revisión de Service Pack 1 de SQL Server 2008 a una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier revisión suministrada en un service pack se incluye en el siguiente service pack.

Información de revisiones

Hay una revisión compatible de Microsoft. Sin embargo, se diseñó para corregir el problema descrito en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Este hotfix puede ser sometido a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere al próximo service pack de SQL Server 2008 que contenga este hotfix.

Para resolver este problema inmediatamente, póngase en contacto con servicios de soporte de cliente de Microsoft para obtener la revisión. Para obtener una lista completa de los números de teléfono de los servicios de soporte técnico de Microsoft e información acerca de los costos de soporte, visite el siguiente sitio Web:
http://support.microsoft.com/contactus/?ws=support
Nota en casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

Requisitos previos

Para aplicar este hotfix, debe tener un equipo que ejecuta SQL Server 2008 Service Pack 1 (SP1).

Información de reinicio

No es necesario reiniciar el equipo después de aplicar este hotfix.

Información del registro

No es necesario cambiar el registro.

Información de archivos de hotfix

Este hotfix contiene sólo los archivos necesarios para corregir los problemas recogidos en este artículo. Esta revisión no puede contenga todos los archivos que debe tener para actualizar plenamente un producto a la compilación más reciente.

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla. Las fechas y las horas de estos archivos se muestran en hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria el elemento fecha y hora en el panel de control.
Para todas las versiones 86 de SQL Server 2008 Database Engine x
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Sqlaccess.dll2007.100.2712.0405,35213-May-200917: 53x 86
Keyfile.dll2007.100.2712.013,65613-May-200915: 37x 86
Sqlservr.exe2007.100.2712.042,729,32013-May-200917: 56x 86
Para todas las versiones 86 de SQL Server 2008 Analysis Services x
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Msmdlocal.dll10.0.2712.023,461,72013-May-200916: 08x 86
Msmdsrv.exe10.0.2712.021,955,41613-May-200916: 09x 86
Keyfile.dll2007.100.2712.013,65613-May-200915: 37x 86
Msmdpump.dll10.0.2712.06,180,69613-May-200916: 08x 86
Msmdspdm.dll10.0.2712.0178,00813-May-200916: 08x 86
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916: 09x 86
Msolap100.dll10.0.2712.06,532,95213-May-200916: 09x 86
Para todas las versiones 64 de SQL Server 2008 Database Engine x
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Sqlaccess.dll2007.100.2712.0412,00814-May-200901: 15x 86
Keyfile.dll2007.100.2712.014,18413-May-200923: 55x 64
Sqlservr.exe2007.100.2712.057,873,25614-May-200901: 17x 64
Para todas las versiones 64 de SQL Server 2008 Analysis Services x
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Msmdlocal.dll10.0.2712.023,461,72013-May-200916: 08x 86
Msmdlocal.dll10.0.2712.044,436,82414-May-200910: 00x 64
Msmdsrv.exe10.0.2712.043,713,36814-May-200910: 00x 64
Keyfile.dll2007.100.2712.014,18413-May-200923: 55x 64
Msmdpump.dll10.0.2712.07,430,48814-May-200910: 00x 64
Msmdspdm.dll10.0.2712.0178,02414-May-200910: 00x 86
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916: 09x 86
Msmgdsrv.dll10.0.2712.012,332,37614-May-200911: 00x 64
Msolap100.dll10.0.2712.06,532,95213-May-200916: 09x 86
Msolap100.dll10.0.2712.08,153,94414-May-200911: 00x 64
Para todas las versiones basadas en Itanium de SQL Server 2008 Database Engine
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Sqlaccess.dll2007.100.2712.0398,69613-May-200917: 01x 86
Keyfile.dll2007.100.2712.019,30413-May-200915: 26IA-64
Sqlservr.exe2007.100.2712.0111,042,40813-May-200917: 08IA-64
Para todas las versiones basadas en Itanium de SQL Server 2008 Analysis Services
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Msmdlocal.dll10.0.2712.023,461,72013-May-200916: 08x 86
Msmdlocal.dll10.0.2712.057,508,18413-May-200915: 44IA-64
Msmdsrv.exe10.0.2712.058,860,88813-May-200915: 46IA-64
Keyfile.dll2007.100.2712.019,30413-May-200915: 26IA-64
Msmdpump.dll10.0.2712.08,943,44813-May-200915: 45IA-64
Msmdspdm.dll10.0.2712.0178,00813-May-200915: 45x 86
Msmgdsrv.dll10.0.2712.015,485,80013-May-200915: 47IA-64
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916: 09x 86
Msolap100.dll10.0.2712.010,065,24013-May-200915: 47IA-64
Msolap100.dll10.0.2712.06,532,95213-May-200916: 09x 86

Solución

Para evitar este problema, establezca la sugerencia de consulta MAXDOP o la opción de MAXDOP a 1 en la instrucción o el nivel de servidor.

Nota El nivel de servidor MAXDOP opción afecta al rendimiento de las consultas que se ejecutan en el servidor.

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:".

Referencias

Para obtener más información acerca del modelo incremental de servicio para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible desde el equipo de SQL Server para entregar revisiones para problemas detectados


Para obtener más información sobre el esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización del software de Microsoft SQL Server


Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 970507 - Última revisión: viernes, 24 de julio de 2009 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
Palabras clave: 
kbmt kbsurveynew kbfix kbqfe kbexpertiseadvanced kbhotfixserver KB970507 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): 970507

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