Symptom
TÀnk dig följande situation:
-
Du infogar mÄnga rader i en tabell i Microsoft SQL Server 2008 eller i SQL Server 2008 R2 genom att anvÀnda nÄgon av följande frÄgor:
-
INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
-
SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
Kommentarer
-
<target_table> plats hÄllaren representerar den faktiska mÄl tabellens namn.
-
<predikat> placeholder representerar det faktiska predikatet.
-
<source_table> plats hÄllaren representerar den faktiska kÀll tabellen.
-
-
TröskelvÀrdet för lÄsning av tabellen har överskridits.
I det hÀr scenariot kommer inte databas motorn att eskalera tabellen.
Orsak
Det hÀr problemet uppstÄr eftersom SQL Server inte internt rÀknar alla nya lÄs som genereras av INSERT-ÄtgÀrder. DÀrför kanske tröskelvÀrdet för lÄsning av lÄs inte utlöses nÀr det behövs.
Lösning
Information om Service Pack för SQL Server 2008
Lös problemet genom att skaffa den senaste Service Pack-versionen för SQL Server 2008. Klicka pÄ följande artikel nummer för att visa artikeln i Microsoft Knowledge Base:
968382 Skaffa den senaste Service Pack-versionen för SQL Server 2008
Information om Service Pack för SQL Server 2008 R2
Lös problemet genom att skaffa den senaste Service Pack-versionen för SQL Server 2008 R2. Mer information fÄr du om du klickar pÄ följande artikel nummer och lÀser artikeln i Microsoft Knowledge Base:
2527041Skaffa den senaste Service Pack-versionen för SQL Server 2008 R2
Status
Microsoft har bekrÀftat att det hÀr Àr ett problem i Microsoft-produkterna som nÀmns i "gÀller".Det hÀr problemet korrigerades först i SQL Server 2008 Service Pack 2 för SQL Server 2008. det hÀr problemet korrigerades först i SQL Server 2008 R2 Service Pack 1 för SQL Server 2008 R2.
Mer information
Mer information om lÄsning finns pÄ följande Microsoft TechNet-webbplats:
AllmÀn information om lÄsning av lÄsOm du vill ta reda pÄ om lÄsen för en tabell eskaleras kör du följande Transact-SQL-uttryck:
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
Om lÄs av tabellen Àr eskalerat returnerar det sista SELECT-uttrycket vÀrdet 1 eller 2. Om lÄs av tabellen inte Àr eskalerade returnerar det sista SELECT-uttrycket ett vÀrde av antingen 40 066 eller 40 067.