Simptomi
Razmotrite sledeći scenario:
-
Mnoge redove umećete u tabelu u sistemu Microsoft SQL Server 2008 ili SQL Server 2008 R2 pomoću jednog od sledećih upita:
-
INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
-
SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
Napomene
-
Čuvar <target_table> predstavlja stvarno ime ciljne tabele.
-
I <predikat> čuvar mesta predstavlja stvarni predikat.
-
Čuvar <source_table> predstavlja stvarnu izvornu tabelu.
-
-
Prekoračen je prag eskalacije zaključavanja tabele.
U ovom scenariju, mašina baze podataka ne eskalira brave tabele.
Uzrok
Do ovog problema dolazi zato što SQL Server ne broji interno sve nove brave koje generišu operacije INSERT. Zbog toga prag eskalacije zaključavanja možda neće biti aktiviran kada je to potrebno.
Rešenje
Informacije o servisnom paketu za SQL Server 2008
Da biste rešili ovaj problem, nabavite najnoviji servisni paket za SQL Server 2008.Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
968382 Nabavljanje najnovijeg servisnog paketa za SQL Server 2008
Informacije o servisnom paketu za SQL Server 2008 R2
Da biste rešili ovaj problem, nabavite najnoviji servisni paket za SQL Server 2008 R2. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2527041Nabavljanje najnovijeg servisnog paketa za SQL Server 2008 R2
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".Ovaj problem je prvi put ispravljen u SQL Server 2008 servisnom paketu 2 za SQL Server 2008.Ovaj problem je prvi put ispravljen u SQL Server 2008 R2 servisnom paketu 1 za SQL Server 2008 R2.
Više informacija
Za više informacija o eskalaciji zaključavanja posetite sledeću Microsoft TechNet Web lokaciju:
Opšte informacije o eskalaciji zaključavanjaDa biste utvrdili da li su brave tabele eskalirale, pokrenite sledeće Transact-SQL naredbe:
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
Ako su brave tabele eskalirale, poslednja izvod SELECT daje vrednost 1 ili2. Ako brave tabele nisu eskalirale, poslednja izvod SELECT daje vrednost 40.066 ili 40.067.