Bagikan melalui


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 = ] spid1 ]
    [ , [ @spid2 = ] spid2 ]
[ ; ]

Argumen

[ @spid1 = ] spid1

Nomor ID sesi Mesin Database tempat sys.dm_exec_sessions pengguna menginginkan informasi penguncian. @spid1 int, dengan default NULL. Jalankan sp_who untuk mendapatkan informasi proses tentang sesi. Jika @spid1 tidak ditentukan, informasi tentang semua kunci akan ditampilkan.

[ @spid2 = ] spid2

Nomor ID sesi Mesin Database lain dari sys.dm_exec_sessions yang mungkin memiliki kunci pada saat yang sama dengan @spid1 dan tentang mana pengguna juga menginginkan informasi. @spid2 int, dengan default NULL.

Mengembalikan nilai kode

0 (berhasil).

Tataan hasil

Kumpulan sp_lock hasil 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 DB_NAME() fungsi untuk mengidentifikasi database.
ObjId int Nomor identifikasi objek tempat kunci ditahan. Anda dapat menggunakan OBJECT_NAME() fungsi 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.
Type 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 jangkauan.
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 pada timbunan atau B-Tree (HoBT). Informasi ini tidak lengkap di SQL Server.
AU = Kunci unit alokasi. Informasi ini tidak lengkap di SQL Server.
Resource nchar(32) Nilai yang mengidentifikasi sumber daya yang dikunci. Format nilai tergantung pada jenis sumber daya yang diidentifikasi dalam Type kolom:

Type Nilai: Resource Nilai
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 file_id kolom dalam sys.database_files tampilan katalog.
KEY: 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 ObjId kolom .
DB: Tidak ada informasi yang diberikan karena database sudah diidentifikasi di dbid kolom .
FIL: Pengidentifikasi file, yang cocok dengan file_id kolom dalam sys.database_files tampilan katalog.
APP: Pengidentifikasi unik untuk sumber daya aplikasi yang dikunci. Dalam format DbPrincipalId:<first two to 16 characters of the resource string><hashed value>.
MD: bervariasi menurut jenis sumber daya. Untuk informasi selengkapnya, lihat deskripsi resource_description kolom di sys.dm_tran_locks.
HBT: Tidak ada informasi yang diberikan. sys.dm_tran_locks Gunakan tampilan manajemen dinamis sebagai gantinya.
AU: Tidak ada informasi yang diberikan. sys.dm_tran_locks Gunakan tampilan manajemen dinamis 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 = Bersama. Sesi penahanan diberikan akses bersama ke sumber daya.
U = Perbarui. Menunjukkan kunci pembaruan yang diperoleh pada sumber daya yang akhirnya mungkin diperbarui. Ini digunakan untuk mencegah bentuk kebuntuan umum yang terjadi ketika beberapa sesi mengunci sumber daya untuk kemungkinan pembaruan 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 = Niat Bersama Eksklusif. 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 Key-Range 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 = Rentang Kunci Eksklusif dan Kunci Sumber Daya Eksklusif. Ini adalah kunci konversi yang digunakan saat memperbarui kunci dalam rentang.
Status 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.
GRANT: Kunci diperoleh.
WAIT: 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 , -2yang memudahkan pengguna untuk mengidentifikasi pemblokiran transaksi terdistribusi. Untuk informasi selengkapnya, lihat Menggunakan Transaksi Yang Ditandai untuk Memulihkan Database Terkait Secara Konsisten.

Izin

Memerlukan VIEW SERVER STATE izin.

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