MSSQLSERVER_1204
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Detail
Atribut | Value |
---|---|
Nama Produk | Server SQL |
ID Peristiwa | 1204 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | LK_OUTOF |
Teks Pesan | Instans Mesin Database SQL Server tidak dapat memperoleh sumber daya LOCK saat ini. Jalankan ulang pernyataan Anda saat ada lebih sedikit pengguna aktif. Minta administrator database untuk memeriksa konfigurasi kunci dan memori untuk instans ini, atau untuk memeriksa transaksi yang berjalan lama. |
Penjelasan
Selama eksekusi, kueri sering memperoleh dan melepaskan kunci pada sumber daya yang mereka akses. Memperoleh kunci menggunakan struktur kunci dari kumpulan struktur kunci yang tersedia. Ketika kunci baru tidak dapat diperoleh karena tidak ada lagi struktur kunci yang tersedia di kumpulan, pesan kesalahan 1204 dikembalikan. Masalah ini dapat disebabkan oleh salah satu alasan berikut:
SQL Server tidak dapat mengalokasikan lebih banyak memori, baik karena proses lain menggunakannya, atau karena SQL Server telah menggunakan semua memorinya dan mencapai nilai yang dikonfigurasi menggunakan opsi konfigurasi memori server maks.
Manajer kunci tidak akan menggunakan lebih dari 60 persen memori yang tersedia untuk SQL Server, dan ambang batas telah terpenuhi.
Anda telah menyiapkan kunci opsi konfigurasi dari prosedur tersimpan sistem sp_configure ke nilai non-default dan tidak dinamis.
Anda telah mengaktifkan bendera pelacakan 1211, 1224, atau keduanya di SQL Server Anda untuk mengontrol perilaku eskalasi kunci, dan Anda menjalankan kueri yang memerlukan banyak kunci.
Tindakan Pengguna
Jika Anda menduga bahwa SQL Server tidak dapat mengalokasikan memori yang memadai, cobalah hal berikut:
Identifikasi apakah ada petugas memori lain di dalam SQL Server yang telah menggunakan sebagian besar memori yang dikonfigurasi SQL Server dengan menggunakan kueri seperti berikut ini:
SELECT pages_kb, type, name, virtual_memory_committed_kb, awe_allocated_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC
Kemudian kurangi konsumsi memori petugas memori tersebut agar memori kunci dapat menggunakan lebih banyak sumber daya. Untuk informasi selengkapnya, lihat Memecahkan masalah memori atau memori rendah di SQL Server.
Jika aplikasi selain SQL Server menggunakan sumber daya, coba hentikan aplikasi ini atau pertimbangkan untuk menjalankannya di server terpisah. Ini akan merilis memori dari proses lain untuk SQL Server.
Jika Anda telah mengonfigurasi memori server maks, tingkatkan pengaturan memori server maks.
Jika Anda mencurigai bahwa pengelola kunci telah menggunakan jumlah maksimum memori yang tersedia, identifikasi transaksi yang paling banyak menyimpan kunci dan hentikan. Skrip berikut akan mengidentifikasi transaksi yang memiliki kunci terbanyak:
SELECT request_session_id, COUNT (*) num_locks FROM sys.dm_tran_locks GROUP BY request_session_id ORDER BY count (*) DESC
Ambil id sesi tertinggi, dan hentikan dengan menggunakan perintah KILL .
Jika Anda menggunakan nilai non-default untuk
locks
, gunakansp_configure
untuk mengubah nilailocks
ke pengaturan defaultnya dengan menggunakan pernyataan berikut:EXEC sp_configure 'locks', 0
Jika Anda menemukan pesan kesalahan di atas saat menggunakan bendera pelacakan SQL Server 1211, 1224, atau keduanya, tinjau penggunaannya dan nonaktifkan saat menjalankan kueri yang memerlukan sejumlah besar kunci. Untuk informasi selengkapnya, tinjau DBCC TRACEON - Trace Flags (Transact-SQL) dan Atasi masalah pemblokiran yang disebabkan oleh eskalasi kunci di SQL Server.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk