Gejala
Pertimbangkan skenario berikut:
-
Anda menyisipkan banyak baris ke dalam tabel di Microsoft SQL Server 2008 atau di SQL Server 2008 R2 dengan menggunakan salah satu kueri berikut ini:
-
INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
-
SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
Catatan
-
Placeholder <target_table> mewakili nama tabel target yang sebenarnya.
-
<predikat> placeholder mewakili predikat aktual.
-
Placeholder <source_table> mewakili tabel sumber aktual.
-
-
Ambang eskalasi kunci tabel terlampaui.
Dalam skenario ini, mesin database tidak meningkatkan kunci tabel.
Penyebab
Masalah ini terjadi karena SQL Server tidak menghitung semua kunci baru yang dihasilkan oleh operasi Sisipkan. Oleh karena itu, ambang eskalasi kunci mungkin tidak dipicu bila diperlukan.
Pemecahan Masalah
Informasi paket layanan untuk SQL Server 2008
Untuk mengatasi masalah ini, Dapatkan paket layanan terbaru untuk SQL Server 2008. untuk informasi selengkapnya, klik nomor artikel berikut ini untuk menampilkan artikel di Basis Pengetahuan Microsoft:
968382 Cara mendapatkan paket layanan terbaru untuk SQL Server 2008
Informasi paket layanan untuk SQL Server 2008 R2
Untuk mengatasi masalah ini, Dapatkan paket layanan terbaru untuk SQL Server 2008 R2. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk menampilkan artikel di Basis Pengetahuan Microsoft:
2527041Cara mendapatkan paket layanan terbaru untuk SQL Server 2008 R2
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".Masalah ini pertama kali dikoreksi di SQL Server 2008 Service Pack 2 untuk SQL Server 2008. masalah ini pertama kali dikoreksi di SQL Server 2008 R2 Service Pack 1 untuk SQL Server 2008 R2.
Informasi Selengkapnya
Untuk informasi selengkapnya tentang eskalasi Lock, kunjungi situs web Microsoft TechNet berikut:
Informasi umum tentang eskalasi LockUntuk menentukan apakah kunci tabel bertambah, jalankan pernyataan Transact-SQL berikut ini:
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
Jika kunci tabel meningkat, pernyataan SELECT terakhir mengembalikan nilai 1 atau 2. Jika kunci tabel tidak bertambah, pernyataan SELECT terakhir mengembalikan nilai baik 40.066 atau 40.067.