REVISIÓN: Pueden producirse interbloqueos cuando se activan varias suscripciones de notificación de consultas simultáneas en los mismos objetos en SQL Server 2005 o en SQL Server 2008

Microsoft distribuye correcciones de Microsoft SQL Server 2005 como un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008.

Síntomas

Imagine el siguiente escenario:
  • En Microsoft SQL Server 2005 o Microsoft SQL Server 2008, configurar varias suscripciones de notificación de consulta en algunas tablas.
  • Actualizar estas tablas.
  • Las solicitudes para las suscripciones de notificación de consulta se activan simultáneamente.
En este escenario, pueden producirse interbloqueos en las tablas de sistema de notificación de consulta (por ejemplo, una tabla de sistema con un nombre similar a sys.query_notification_xxxxxx). Además, se graba el siguiente gráfico de interbloqueo en el archivo de registro de errores de SQL Server:
Id. de camarero = modo process7f8dc48 = U requestType = espera,
lista de espera,
Id. del propietario = modo process873ce38 = U,
lista de propietario,
bloqueo de teclado hobtid = 72057594049462272 dbid = 5 objectname = < Database >. indexname sys.query_notification_626101271 = cidx id = lock178dd6c0
mode=U associatedObjectId=72057594049462272,

Id. de camarero = modo process873ce38 = U requestType = espera,

lista de espera,

Id. del propietario = modo process7f8dc48 = U,
lista de propietario,
bloqueo de teclado hobtid = 72057594049462272 dbid = 5 objectname = < Database >. indexname sys.query_notification_626101271 = cidx id = lock176848c0
mode=U associatedObjectId=72057594049462272,
lista de recursos,
<Query>,
inputbuf,
<Query>,
marco procname = línea ad hoc = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
Id. de proceso = process873ce38 taskpriority = 0 logused = 0 waitresource = clave: waittime 5:72057594049462272 (0e0086ec58d5) = 4984 ownerId = transactionname 574444809 = CQueryScan::BeginNotifXact lasttranstarted = < fecha >< tiempo > XDES = 0x732047f8 lockMode = schedulerid U = kpid 7 = 8068 estado = spid suspendido = 133 sbid = 0 ecid = prioridad 0 = transcount 0 = lastbatchstarted 0 = < fecha >< tiempo > lastbatchcompleted = < fecha >< hora > clientapp = .net nombre de host del proveedor de datos SqlClient = < nombre de host > hostpid = loginname 1824 = < loginname > isolationlevel = lectura xactid (2) confirmado = 574444808 CurrentDb = lockTimeout 5 = 4294967295 clientoption1 = clientoption2 671088672 = 128056,

<Query>,
inputbuf,
<Query>,
marco procname = línea ad hoc = 1 sqlhandle = 0x020000009f5c4302918e8370f6d9bd71045a53f75b8056b3,
executionStack,
Id. de proceso = process7f8dc48 taskpriority = logused 0 = 0 waitresource = clave: waittime 5:72057594049462272 (0d006843edc7) = 4984 ownerId = transactionname 574444769 = CQueryScan::BeginNotifXact lasttranstarted = < fecha >< tiempo > XDES = 0x6adc9528 lockMode = schedulerid U = kpid 5 = 676 status = spid suspendido = sbid 293 = 0 ecid = prioridad 0 = transcount 0 = lastbatchstarted 0 = lastbatchcompleted < fecha >< hora > = < fecha >< hora > clientapp = .net nombre de host del proveedor de datos SqlClient = < nombre de host > 110 hostpid = loginname 1272 = < loginname > isolationlevel = lectura xactid (2) confirmado = currentdb 574444768 = lockTimeout 5 = 4294967295 clientoption1 = clientoption2 671088672 = 128056,

lista de procesos,
la víctima del interbloqueo = process873ce38,
lista de bloqueo,

Causa

De forma predeterminada, SQL Server utiliza el nivel de aislamiento de transacción READ_COMMITTED. Por lo tanto, consultas internas de SQL Server tienen potencial para que se ejecute en los interbloqueos. En el escenario que se describe en la sección "Síntomas", las consultas que causan los interbloqueos son las consultas internas.

Solución

SQL Server 2005 Service Pack 3


La corrección para este problema se publicó primero en la actualización acumulativa 6 para SQL Server 2005 Service Pack 3. 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:
974648 acum actualizar paquete 6 para el Service Pack 3 de SQL Server 2005
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
960598 el SQL Server 2005 crea que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 3
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de Service Pack 3 de SQL Server 2005 a una instalación de SQL Server 2005 Service Pack 3. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

La versión de SQL Server 2008

Importante: Debe instalar esta revisión si está ejecutando la versión de SQL Server 2008.

La corrección para este problema se publicó por primera vez en la Actualización acumulativa 8. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
975976 acum actualizar paquete 8 para SQL Server 2008
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008

SQL Server 2008 Service Pack 1

Importante: Debe instalar esta revisión si está ejecutando SQL Server 2008 Service Pack 1.


La corrección para este problema se publicó primero en 5 de actualización acumulativa 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:
Paquete 5 de actualización de 975977 acumulativa para SQL Server 2008 Service Pack 1
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
970365 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2008 Service Pack 1 en una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.


Después de aplicar esta revisión, se establecerá el nivel de aislamiento a Serializable al motor de base de datos tiene acceso a las tablas del sistema.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

Según la causa de este problema, el método más común de ajuste e indización no puede resolver este problema. La revisión se utiliza para modificar temporalmente el nivel de aislamiento a un nivel superior de una cierta parte de esta transacción para asegurarse de que no se ejecutan las consultas problemáticas en el interbloqueo.

Referencias

Para obtener más información acerca del modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

935897 un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados

Para obtener más información sobre cómo obtener el Service Pack 3 de SQL Server 2005, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

913089 cómo obtener el service pack más reciente para SQL Server 2005

Para obtener más información acerca de las nuevas características de SQL Server 2005 Service Pack 3 (SP3) y las mejoras de SQL Server 2005 SP3, visite el siguiente sitio Web de Microsoft:
Para obtener más información acerca del 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:

Paquetes de actualización de 822499 nuevo esquema de nomenclatura para software de Microsoft SQL Server

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

Id. de artículo: 975090 - Última revisión: 13 ene. 2017 - Revisión: 1

Comentarios