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 .
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 NilaiRID : 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:
Menggunakan
SET TRANSACTION ISOLATION LEVEL
untuk menentukan tingkat penguncian untuk sesi. Untuk sintaks dan pembatasan, lihat MENGATUR TINGKAT ISOLASI TRANSAKSI (Transact-SQL).Menggunakan petunjuk tabel penguncian untuk menentukan tingkat penguncian untuk referensi individual tabel dalam
FROM
klausa. Untuk sintaks dan batasan, lihat Petunjuk tabel (Transact-SQL).
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.
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 53
proses .
USE master;
GO
EXEC sp_lock 53;
GO