Applies ToSQL Server 2008 Service Pack 4 SQL Server 2008 R2 Service Pack 3

Symptomen

Neem het volgende scenario:

  • U kunt veel rijen invoegen in een tabel in Microsoft SQL Server 2008 of in SQL Server 2008 R2 met behulp van een van de volgende query's:

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

    Opmerkingen

    • De tijdelijke aanduiding voor <target_table> de feitelijke naam van de doeltabel vertegenwoordigt.

    • De tijdelijke aanduiding <predicaat> bevat het feitelijke predicaat.

    • De tijdelijke aanduiding voor <source_table> voor de naam van de brontabel.

  • De drempelwaarde voor escalatie van de tabel wordt overschreden.

In dit scenario wordt de bevergrendeling van de tabel niet door de database-engine geëscaleerd.

Oorzaak

Dit probleem doet zich voor omdat SQL Server de nieuwe vergrendelingen die wordt gegenereerd door bewerkingen voor invoegen niet intern in SQL Server kan tellen. Daarom wordt de drempelwaarde voor het ontgrendelen van escalaties mogelijk niet geactiveerd wanneer dit is vereist.

Oplossing

Informatie over service packs voor SQL Server 2008

U kunt dit probleem oplossen door het nieuwste Service Pack voor SQL Server 2008 te downloaden. voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

968382 Het nieuwste Service Pack voor SQL Server 2008

Informatie over service packs voor SQL Server 2008 R2

U kunt dit probleem oplossen door het nieuwste Service Pack voor SQL Server 2008 R2 te downloaden. Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

2527041Het nieuwste Service Pack voor SQL Server 2008 R2 verkrijgen

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.Dit probleem is voor het eerst opgelost in SQL Server 2008 Service Pack 2 voor SQL Server 2008. dit probleem is voor het eerst gecorrigeerd in SQL Server 2008 R2 Service Pack 1 voor SQL Server 2008 R2.

Meer informatie

Ga naar de volgende Microsoft TechNet-website voor meer informatie over het vergrendelen van escalatie.

Algemene informatie over het vergrendelen van escalatieVoer de volgende Transact-SQL-instructies uit om te bepalen of de vergrendeling van een tabel wordt geëscaleerd.

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 

Als de vergrendeling van de tabel wordt geëscaleerd, geeft de laatste selectie-instructie een waarde van 1 of 2als resultaat. Als de vergrendeling van de tabel niet wordt geëscaleerd, geeft de laatste selectie-instructie een waarde uit 40.066 of 40.067als resultaat.

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.