sp_lock (T-SQL)

Berlaku untuk:SQL Server

Melaporkan informasi tentang kunci.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Untuk mendapatkan informasi tentang kunci di Mesin Database SQL Server, gunakan tampilan manajemen dinamis sys.dm_tran_locks .

Konvensi sintaks transact-SQL

Sintaks

sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]  
[ ; ]  

Argumen

[ @spid1 = ] 'session ID1' Adalah nomor ID sesi Mesin Database dari sys.dm_exec_sessions yang penggunanya ingin mengunci informasi. ID1 sesi int dengan nilai default NULL. Jalankan sp_who untuk mendapatkan informasi proses tentang sesi. Jika ID1 sesi tidak ditentukan, informasi tentang semua kunci akan ditampilkan.

[ @spid2 = ] 'session ID2' Adalah nomor ID sesi Mesin Database lain dari sys.dm_exec_sessions yang mungkin memiliki kunci pada saat yang sama dengan ID sesi1 dan tentang mana pengguna juga menginginkan informasi. ID2 sesi adalah int dengan nilai default NULL.

Mengembalikan Nilai Kode

0 (berhasil)

Tataan Hasil

Kumpulan hasil sp_lock berisi satu baris untuk setiap kunci yang dipegang oleh sesi yang ditentukan dalam parameter @spid1 dan @spid2 . Jika tidak ada @spid1 atau @spid2 yang ditentukan, kumpulan hasil melaporkan kunci untuk semua sesi yang saat ini aktif dalam instans Mesin Database.

Nama kolom Jenis data Deskripsi
Spid smallint Nomor ID sesi Mesin Database untuk proses yang meminta kunci.
dbid smallint Nomor identifikasi database tempat kunci disimpan. Anda dapat menggunakan fungsi DB_NAME() untuk mengidentifikasi database.
ObjId int Nomor identifikasi objek tempat kunci ditahan. Anda dapat menggunakan fungsi OBJECT_NAME() dalam database terkait untuk mengidentifikasi objek. Nilai 99 adalah kasus khusus yang menunjukkan kunci pada salah satu halaman sistem yang digunakan untuk merekam alokasi halaman dalam database.
IndId smallint Nomor identifikasi indeks tempat kunci disimpan.
Jenis nchar(4) Jenis kunci:

RID = Kunci pada satu baris dalam tabel yang diidentifikasi oleh pengidentifikasi baris (RID).

KEY = Kunci dalam indeks yang melindungi rentang kunci dalam transaksi yang dapat diserialisasikan.

PAG = Kunci pada halaman data atau indeks.

EXT = Kunci pada tingkat.

TAB = Kunci pada seluruh tabel, termasuk semua data dan indeks.

DB = Kunci database.

FIL = Kunci file database.

APP = Kunci sumber daya yang ditentukan aplikasi.

MD = Kunci metadata, atau informasi katalog.

HBT = Kunci tumpuk atau B-Tree (HoBT). Informasi ini tidak lengkap di SQL Server.

AU = Kunci unit alokasi. Informasi ini tidak lengkap di SQL Server.
Sumber daya nchar(32) Nilai yang mengidentifikasi sumber daya yang dikunci. Format nilai tergantung pada jenis sumber daya yang diidentifikasi di kolom Jenis :

Jenis Nilai: Nilai Sumber Daya

RID: Pengidentifikasi dalam format fileid:pagenumber:rid, di mana fileid mengidentifikasi file yang berisi halaman, pagenumber mengidentifikasi halaman yang berisi baris, dan rid mengidentifikasi baris tertentu di halaman. fileid cocok dengan kolom file_id dalam tampilan katalog sys.database_files .

KUNCI: Angka heksadesimal yang digunakan secara internal oleh Mesin Database.

PAG: Angka dalam format fileid:pagenumber, di mana fileid mengidentifikasi file yang berisi halaman, dan pagenumber mengidentifikasi halaman.

EXT: Angka yang mengidentifikasi halaman pertama sejauh ini. Angka dalam format fileid:pagenumber.

TAB: Tidak ada informasi yang diberikan karena tabel sudah diidentifikasi di kolom ObjId .

DB: Tidak ada informasi yang diberikan karena database sudah diidentifikasi di kolom dbid .

FIL: Pengidentifikasi file, yang cocok dengan kolom file_id dalam tampilan katalog sys.database_files .

APP: Pengidentifikasi unik untuk sumber daya aplikasi yang dikunci. Dalam format DbPrincipalId:<pertama dua hingga 16 karakter dari nilai> hash string><sumber daya.

MD: bervariasi menurut jenis sumber daya. Untuk informasi selengkapnya, lihat deskripsi kolom resource_description di sys.dm_tran_locks (Transact-SQL).

HBT: Tidak ada informasi yang diberikan. Gunakan tampilan manajemen dinamis sys.dm_tran_locks sebagai gantinya.

AU: Tidak ada informasi yang diberikan. Gunakan tampilan manajemen dinamis sys.dm_tran_locks sebagai gantinya.
Mode nvarchar(8) Mode kunci diminta. Dapat berupa:

NULL = Tidak ada akses yang diberikan ke sumber daya. Berfungsi sebagai tempat penampung.

Sch-S = Stabilitas skema. Memastikan bahwa elemen skema, seperti tabel atau indeks, tidak dihilangkan saat sesi apa pun menyimpan kunci stabilitas skema pada elemen skema.

Sch-M = Modifikasi skema. Harus dipegang oleh sesi apa pun yang ingin mengubah skema sumber daya yang ditentukan. Memastikan bahwa tidak ada sesi lain yang mereferensikan objek yang ditunjukkan.

S = Dibagikan. Sesi penahanan diberikan akses bersama ke sumber daya.

U = Perbarui. Menunjukkan kunci pembaruan yang diperoleh pada sumber daya yang akhirnya dapat diperbarui. Ini digunakan untuk mencegah bentuk kebuntuan umum yang terjadi ketika beberapa sesi mengunci sumber daya untuk pembaruan potensial di lain waktu.

X = Eksklusif. Sesi penahanan diberikan akses eksklusif ke sumber daya.

IS = Niat Bersama. Menunjukkan niat untuk menempatkan kunci S pada beberapa sumber daya bawahan dalam hierarki kunci.

IU = Pembaruan Niat. Menunjukkan niat untuk menempatkan kunci U pada beberapa sumber daya bawahan dalam hierarki kunci.

IX = Niat Eksklusif. Menunjukkan niat untuk menempatkan kunci X pada beberapa sumber daya bawahan dalam hierarki kunci.

SIU = Pembaruan Niat Bersama. Menunjukkan akses bersama ke sumber daya dengan niat memperoleh kunci pembaruan pada sumber daya subordinat dalam hierarki kunci.

SIX = Shared Intent Exclusive. Menunjukkan akses bersama ke sumber daya dengan niat memperoleh kunci eksklusif pada sumber daya bawahan dalam hierarki kunci.

UIX = Perbarui Niat Eksklusif. Menunjukkan penangguhan kunci pembaruan pada sumber daya dengan niat memperoleh kunci eksklusif pada sumber daya bawahan dalam hierarki kunci.

BU = Pembaruan Massal. Digunakan oleh operasi massal.

RangeS_S = Rentang Kunci Bersama dan kunci Sumber Daya Bersama. Menunjukkan pemindaian rentang yang dapat diserialisasikan.

RangeS_U = Rentang Kunci Bersama dan Perbarui Kunci Sumber Daya. Menunjukkan pemindaian pembaruan yang dapat diserialisasikan.

RangeI_N = Sisipkan Rentang Kunci dan Kunci Sumber Daya Null. Digunakan untuk menguji rentang sebelum memasukkan kunci baru ke dalam indeks.

RangeI_S = Kunci Konversi Rentang Kunci. Dibuat oleh tumpang tindih kunci RangeI_N dan S.

RangeI_U = Kunci Konversi Rentang Kunci yang dibuat oleh tumpang tindih kunci RangeI_N dan U.

RangeI_X = Kunci Konversi Rentang Kunci yang dibuat oleh tumpang tindih kunci RangeI_N dan X.

RangeX_S = Kunci Konversi Rentang Kunci yang dibuat oleh tumpang tindih RangeI_N dan RangeS_S. Kunci.

RangeX_U = Kunci Konversi Rentang Kunci yang dibuat oleh tumpang tindih kunci RangeI_N dan RangeS_U.

RangeX_X = Kunci Eksklusif dan Kunci Sumber Daya Eksklusif. Ini adalah kunci konversi yang digunakan saat memperbarui kunci dalam rentang.
Keadaan nvarchar(5) Status permintaan kunci:

CNVRT: Kunci sedang dikonversi dari mode lain, tetapi konversi diblokir oleh proses lain yang memegang kunci dengan mode yang bertentangan.

Kunci diperoleh.

TUNGGU: Kunci diblokir oleh proses lain yang memegang kunci dengan mode yang bertentangan.

Keterangan

Pengguna dapat mengontrol penguncian operasi baca dengan:

Semua transaksi terdistribusi yang tidak terkait dengan sesi adalah transaksi tanpa sumber. Mesin Database menetapkan semua transaksi terdistribusi yatim piatu nilai SPID -2, yang memudahkan pengguna untuk mengidentifikasi pemblokiran transaksi terdistribusi. Untuk informasi selengkapnya, lihat Menggunakan Transaksi Yang Ditandai untuk Memulihkan Database Terkait Secara Konsisten (Model Pemulihan Penuh).

Izin

Memerlukan izin TAMPILKAN STATUS SERVER.

Contoh

J. Mencantumkan semua kunci

Contoh berikut menampilkan informasi tentang semua kunci yang saat ini disimpan dalam instans Mesin Database.

USE master;  
GO  
EXEC sp_lock;  
GO  

B. Mencantumkan kunci dari proses server tunggal

Contoh berikut menampilkan informasi, termasuk kunci, tentang ID 53proses .

USE master;  
GO  
EXEC sp_lock 53;  
GO  

Lihat Juga

sys.dm_tran_locks (T-SQL)
DB_NAME (T-SQL)
KILL (Transact-SQL)
OBJECT_NAME (T-SQL)
sp_who (T-SQL)
sys.database_files (Transact-SQL)
sys.dm_os_tasks (T-SQL)
sys.dm_os_threads (T-SQL)