Kunci:Kelas Peristiwa Eskalasi
Berlaku untuk: SQL Server
Kelas peristiwa Lock:Escalation menunjukkan bahwa kunci yang lebih halus telah dikonversi ke kunci berbahan kasar; misalnya, kunci baris yang dikonversi ke kunci objek. Kelas peristiwa eskalasi adalah EVENT ID 60.
Kunci:Kolom Data Kelas Peristiwa Eskalasi
Nama kolom data | Jenis data | Deskripsi | ID Kolom | Dapat difilter |
---|---|---|---|---|
ApplicationName | nvarchar | Nama aplikasi klien yang membuat koneksi ke instans SQL Server. Kolom ini diisi dengan nilai yang diteruskan oleh aplikasi daripada nama program yang ditampilkan. | 10 | Ya |
ClientProcessID | int | ID yang ditetapkan oleh komputer host ke proses di mana aplikasi klien berjalan. Kolom data ini diisi jika klien menyediakan ID proses klien. | 9 | Ya |
DatabaseID | int | ID database tempat kunci diperoleh. SQL Server Profiler menampilkan nama database jika kolom data ServerName diambil dalam jejak dan server tersedia. Tentukan nilai untuk database dengan menggunakan fungsi DB_ID. | 3 | Ya |
DatabaseName | nvarchar | Nama database tempat eskalasi terjadi. | 35 | Ya |
EventClass | int | Jenis peristiwa = 60. | 27 | No |
EventSubClass | int | Penyebab eskalasi kunci: 0 - LOCK_THRESHOLD menunjukkan pernyataan melebihi ambang kunci. 1 - MEMORY_THRESHOLD menunjukkan pernyataan melebihi ambang memori. |
21 | Ya |
EventSequence | int | Urutan peristiwa tertentu dalam permintaan. | 51 | No |
GroupID | int | ID grup beban kerja tempat peristiwa SQL Trace diaktifkan. | 66 | Ya |
HostName | nvarchar | Nama komputer tempat klien berjalan. Kolom data ini diisi jika klien menyediakan nama host. Untuk menentukan nama host, gunakan fungsi HOST_NAME. | 8 | Ya |
IntegerData | int | Jumlah kunci HoBT. Jumlah kunci untuk HoBT pada saat eskalasi kunci. | 25 | Ya |
IntegerData2 | int | Jumlah penguncian yang diukur. Jumlah total kunci yang dikonversi. Struktur kunci ini dibatalkan alokasinya karena sudah dicakup oleh kunci yang meningkat. | 55 | Ya |
IsSystem | int | Menunjukkan apakah peristiwa terjadi pada proses sistem atau proses pengguna. 1 = sistem, 0 = pengguna. | 60 | Ya |
LineNumber | int | Nomor baris pernyataan Transact-SQL. | 5 | Ya |
LoginName | nvarchar | Nama login pengguna (baik login keamanan SQL Server atau info masuk masuk Microsoft Windows dalam bentuk DOMAIN\username). | 11 | Ya |
LoginSid | gambar | Nomor identifikasi keamanan (SID) pengguna yang masuk. Anda dapat menemukan informasi ini dalam tampilan katalog sys.server_principals . Setiap SID unik untuk setiap login di server. | 41 | Ya |
Mode | int | Mode kunci yang dihasilkan setelah eskalasi: 0=NULL - Kompatibel dengan semua mode kunci lainnya (LCK_M_NL) 1=Kunci stabilitas skema (LCK_M_SCH_S) 2=Kunci Modifikasi Skema (LCK_M_SCH_M) 3=Kunci Bersama (LCK_M_S) 4=Perbarui Kunci (LCK_M_U) 5=Kunci Eksklusif (LCK_M_X) 6=Kunci Bersama Niat (LCK_M_IS) 7=Kunci Pembaruan Niat (LCK_M_IU) 8=Kunci Eksklusif Niat (LCK_M_IX) 9=Dibagikan dengan niat untuk Memperbarui (LCK_M_SIU) 10=Dibagikan dengan Intent Exclusive (LCK_M_SIX) 11=Perbarui dengan Intent Exclusive (LCK_M_UIX) 12=Kunci Pembaruan Massal (LCK_M_BU) 13=Rentang kunci Bersama/Bersama (LCK_M_RS_S) 14=Rentang kunci Bersama/Pembaruan (LCK_M_RS_U) 15=Rentang Kunci Sisipkan NULL (LCK_M_RI_NL) 16=Rentang Kunci Sisipkan Bersama (LCK_M_RI_S) 17=Pembaruan Sisipkan Rentang Kunci (LCK_M_RI_U) 18=Rentang Kunci Sisipkan Eksklusif (LCK_M_RI_X) 19=Rentang Kunci Bersama Eksklusif (LCK_M_RX_S) 20=Pembaruan Eksklusif Rentang Kunci (LCK_M_RX_U) 21=Key Range Eksklusif (LCK_M_RX_X) |
32 | Ya |
NTDomainName | nvarchar | Domain Windows tempat pengguna berada. | 7 | Ya |
NTUserName | nvarchar | Nama pengguna Windows. | 6 | Ya |
ObjectID | int | ID tabel yang ditetapkan sistem tempat eskalasi kunci dipicu. | 22 | Ya |
ObjectID2 | bigint | ID objek atau entitas terkait. (ID HoBT tempat eskalasi kunci dipicu.) | 56 | Ya |
Offset | int | Memulai offset pernyataan Transact-SQL. | 61 | Ya |
OwnerID | int | 1=TRANSAKSI 2=KURSOR 3=SESI 4=SHARED_TRANSACTION_WORKSPACE 5=EXCLUSIVE_TRANSACTION_WORKSPACE 6=WAITFOR_QUERY |
58 | Ya |
RequestID | int | ID permintaan yang berisi pernyataan. | 49 | Ya |
ServerName | nvarchar | Nama instans SQL Server yang sedang dilacak. | 26 | No |
SessionLoginName | nvarchar | Nama masuk pengguna yang berasal dari sesi. Misalnya, jika Anda terhubung ke SQL Server menggunakan Login1 dan menjalankan pernyataan sebagai Login2, SessionLoginName menunjukkan Login1 dan LoginName menampilkan Login2. Kolom ini menampilkan login SQL Server dan Windows. | 64 | Ya |
SPID | int | ID sesi tempat peristiwa terjadi. | 12 | Ya |
StartTime | datetime | Waktu di mana peristiwa dimulai, jika tersedia. | 14 | Ya |
TextData | ntext | Teks pernyataan Transact-SQL yang menyebabkan eskalasi kunci. | 1 | Ya |
TransactionID | bigint | ID transaksi yang ditetapkan sistem. | 4 | Ya |
Jenis | int | Granularitas eskalasi kunci: 1=NULL_RESOURCE 2=DATABASE 3=FILE 5=OBJECT (tingkat tabel) 6=HALAMAN 7=KUNCI 8=EXTENT 9=RID 10=APLIKASI 11=METADATA 12=HOBT 13=ALLOCATION_UNIT |
57 | Ya |
Contoh
Contoh berikut menggunakan sp_trace_create
prosedur untuk membuat jejak, menggunakan sp_trace_setevent
untuk menambahkan kolom eskalasi kunci ke pelacakan, lalu menggunakan sp_trace_setstatus
untuk memulai jejak. Dalam pernyataan seperti EXEC sp_trace_setevent @TraceID, 60, 22, 1
, angka 60
menunjukkan kelas peristiwa eskalasi, 22
menunjukkan kolom ObjectID , dan 1
mengatur peristiwa pelacakan ke AKTIF.
DECLARE @RC int, @TraceID int;
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\TraceResults';
-- Set the events and data columns you need to capture.
EXEC sp_trace_setevent @TraceID, 60, 1, 1; -- 1 = TextData
EXEC sp_trace_setevent @TraceID, 60, 12, 1; -- 12 = SPID
EXEC sp_trace_setevent @TraceID, 60, 21, 1; -- 21 = EventSubClass
EXEC sp_trace_setevent @TraceID, 60, 22, 1; -- 22 = ObjectID
EXEC sp_trace_setevent @TraceID, 60, 25, 1; -- 25 = IntegerData
EXEC sp_trace_setevent @TraceID, 60, 55, 1; -- 25 = IntegerData2
EXEC sp_trace_setevent @TraceID, 60, 57, 1; -- 57 = Type
-- Set any filter by using sp_trace_setfilter.
-- Start the trace.
EXEC sp_trace_setstatus @TraceID, 1;
GO
Sekarang setelah jejak berjalan, jalankan pernyataan yang ingin Anda lacak. Setelah selesai, jalankan kode berikut untuk menghentikan lalu tutup jejak. Contoh ini menggunakan fn_trace_getinfo
fungsi untuk mendapatkan yang traceid
akan digunakan dalam sp_trace_setstatus
pernyataan.
-- After the trace is complete.
DECLARE @TraceID int;
-- Find the traceid of the current trace.
SELECT @TraceID = traceid
FROM ::fn_trace_getinfo(default)
WHERE value = N'C:\TraceResults.trc';
-- First stop the trace.
EXEC sp_trace_setstatus @TraceID, 0;
-- Close and then delete its definition from SQL Server.
EXEC sp_trace_setstatus @TraceID, 2;
GO