REVISIÓN: No se escalan los bloqueos de una tabla cuando se inserta el número de filas en una tabla de SQL Server 2008 o en SQL Server 2008 R2

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

En esta página

Síntomas

Considere el siguiente escenario:

  • Inserte el número de filas en una tabla de Microsoft SQL Server 2008 o en SQL Server 2008 R2 mediante una de las siguientes consultas:
    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
    Notas
    • El <target_table></target_table> marcador de posición representa el nombre de la tabla de destino real.
    • El <predicate></predicate> marcador de posición representa el predicado real.
    • El <source_table></source_table> marcador de posición representa la tabla de origen reales.
  • Se ha superado el umbral de escalada del bloqueo de la tabla.
En este escenario, el motor de base de datos no escalar los bloqueos de la tabla.

Causa

Este problema se produce debido a que SQL Server no cuenta internamente todos los nuevos bloqueos generados por las operaciones de INSERCIÓN. Por lo tanto, es posible que no se desencadene el umbral de escalada del bloqueo cuando sea necesario.

Solución

Información del Service pack de SQL Server 2008

Para resolver este problema, obtenga el service pack más reciente para SQL Server 2008.

Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
968382 Cómo obtener el service pack más reciente para SQL Server 2008

Información del Service pack para SQL Server 2008 R2

Para resolver este problema, obtenga el service pack más reciente para SQL Server 2008 R2. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2527041Cómo obtener el service pack más reciente para SQL Server 2008 R2

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Se refiere a:".
Este problema se corrigió primero en SQL Server 2008 Service Pack 2 de SQL Server 2008.
Este problema se corrigió primero en SQL Server 2008 R2 Service Pack 1 para SQL Server 2008 R2.

Más información

Para obtener más información acerca de la extensión de bloqueo, visite el siguiente sitio Web de Microsoft TechNet:
Información general acerca de la extensión de bloqueo
Para determinar si se escalan los bloqueos de una tabla, ejecute las instrucciones de Transact-SQL siguientes:
USE tempdb
GO

CREATE TABLE x 
(
i INT NOT NULL PRIMARY KEY
)
GO

BEGIN TRAN
INSERT x
SELECT TOP (40000)
ROW_NUMBER() OVER 
(
ORDER BY (SELECT NULL)
) AS r
FROM 
master..spt_values a, 
master..spt_values b
ORDER BY
r

SELECT
COUNT(*)
FROM sys.dm_tran_locks
WHERE 
request_session_id = @@SPID 
ROLLBACK
GO

DROP TABLE x   
Si se escalan los bloqueos de la tabla, la última instrucción SELECT devuelve un valor de uno de ellos 1 o 2. Si no se escalan los bloqueos de la tabla, la última instrucción SELECT devuelve un valor de uno de ellos 40,066 o 40,067.


Propiedades

Id. de artículo: 2448971 - Última revisión: viernes, 22 de abril de 2011 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
Palabras clave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2448971 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): 2448971

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