Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

Sintomas

Considere o seguinte cenário:

  • Insere muitas linhas numa tabela no Microsoft SQL Server 2008 ou no SQL Server 2008 R2 utilizando uma das seguintes consultas:

    • INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
    • SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>

    Notas

    • O espaço reservado <target_table> representa o nome da mesa-alvo real.

    • O <predicado> espaço reservado representa o predicado real.

    • O espaço reservado <source_table> representa a tabela de origem real.

  • O limiar de escalada de bloqueio da tabela é ultrapassado.

Neste cenário, o motor da base de dados não aumenta as fechaduras da tabela.

Causa

Este problema ocorre porque o SQL Server não conta internamente todos os novos bloqueios que são gerados pelas operações INSERT. Por conseguinte, o limiar de escalada do bloqueio pode não ser acionado quando é necessário.

Resolução

Informações do pacote de serviços para SQL Server 2008

Para resolver este problema, obtenha o mais recente pacote de serviços para SQL Server 2008.Para mais informações, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

968382 Como obter o mais recente pacote de serviços para SQL Server 2008

Informações do pacote de serviços para SQL Server 2008 R2

Para resolver este problema, obtenha o mais recente pacote de serviços para SQL Server 2008 R2. Para mais informações, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2527041Como obter o mais recente pacote de serviços para SQL Server 2008 R2

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".Este problema foi corrigido pela primeira vez no SQL Server 2008 Service Pack 2 para SQL Server 2008.Este problema foi corrigido pela primeira vez no SQL Server 2008 R2 Service Pack 1 para SQL Server 2008 R2.

Mais Informações

Para obter mais informações sobre a escalada de bloqueio, visite o seguinte website da Microsoft TechNet:

Informações gerais sobre a escalada do bloqueioPara determinar se as fechaduras de uma mesa são escaladas, executar as seguintes declarações Transact-SQL:

USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x 

Se os bloqueios da tabela forem escalonados, a última declaração SELECT devolve um valor de 1 ou 2. Se os bloqueios da tabela não forem escalados, a última declaração SELECT devolve um valor de 40.066 ou 40.067.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×