KILL (Transact-SQL)
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric
Mengakhiri proses pengguna yang didasarkan pada ID sesi atau unit kerja (UOW). Jika ID sesi atau UOW yang ditentukan memiliki banyak pekerjaan yang harus diurungkan, pernyataan KILL mungkin perlu waktu untuk diselesaikan. Proses ini membutuhkan waktu lebih lama untuk diselesaikan terutama ketika proses melibatkan menggulung balik transaksi yang panjang.
KILL mengakhiri koneksi normal, yang secara internal menghentikan transaksi yang terkait dengan ID sesi yang ditentukan. Terkadang, Koordinator Transaksi Terdistribusi Microsoft (MS DTC) mungkin sedang digunakan. Jika MS DTC sedang digunakan, Anda juga dapat menggunakan pernyataan untuk mengakhiri transaksi terdistribusi tanpa induk dan ragu.
Sintaksis
-- Syntax for SQL Server
KILL { session ID [ WITH STATUSONLY ] | UOW [ WITH STATUSONLY | COMMIT | ROLLBACK ] }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
KILL 'session_id'
[;]
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
ID sesi
Apakah ID sesi dari proses berakhir. session_id
adalah bilangan bulat unik (int) yang ditetapkan ke setiap koneksi pengguna saat koneksi dibuat. Nilai ID sesi terikat dengan koneksi selama durasi koneksi. Ketika koneksi berakhir, nilai bilangan bulat dirilis dan dapat ditetapkan ulang ke koneksi baru.
Kueri berikut ini bisa membantu Anda mengidentifikasi session_id
yang ingin Anda bunuh:
SELECT conn.session_id, host_name, program_name,
nt_domain, login_name, connect_time, last_request_end_time
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
ON sess.session_id = conn.session_id;
UOW
Mengidentifikasi Unit ID Kerja (UOW) transaksi terdistribusi. UOW adalah GUID yang dapat diperoleh dari kolom request_owner_guid tampilan sys.dm_tran_locks
manajemen dinamis. UOW juga dapat diperoleh dari log kesalahan atau melalui monitor MS DTC. Untuk informasi selengkapnya tentang memantau transaksi terdistribusi, lihat dokumentasi MS DTC.
Gunakan KILL <UOW> untuk menghentikan transaksi terdistribusi yang belum terselesaikan. Transaksi ini tidak terkait dengan ID sesi nyata, tetapi sebaliknya dikaitkan secara buatan dengan ID sesi = '-2'. ID sesi ini memudahkan untuk mengidentifikasi transaksi yang belum terselesaikan dengan mengkueri kolom ID sesi dalam sys.dm_tran_locks
tampilan manajemen dinamis , sys.dm_exec_sessions
, atau sys.dm_exec_requests
.
DENGAN STATUSONLY
Digunakan untuk menghasilkan laporan kemajuan untuk UOW tertentu atau session_id
yang sedang digulung balik karena pernyataan KILL sebelumnya. KILL WITH STATUSONLY tidak mengakhiri atau mengembalikan UOW atau ID sesi. Perintah hanya menampilkan kemajuan pembatalan saat ini.
DENGAN PENERAPAN
Digunakan untuk membunuh transaksi terdistribusi yang belum terselesaikan dengan penerapan. Hanya berlaku untuk transaksi terdistribusi, Anda harus menentukan UOW untuk menggunakan opsi ini. Lihat transaksi terdistribusi untuk informasi selengkapnya.
DENGAN PUTAR KEMBALI
Digunakan untuk membunuh transaksi terdistribusi yang belum terselesaikan dengan pembatalan. Hanya berlaku untuk transaksi terdistribusi, Anda harus menentukan UOW untuk menggunakan opsi ini. Lihat transaksi terdistribusi untuk informasi selengkapnya.
Keterangan
KILL biasanya digunakan untuk mengakhiri proses yang memblokir proses penting lainnya dengan kunci. KILL juga dapat digunakan untuk menghentikan proses yang menjalankan kueri yang menggunakan sumber daya sistem yang diperlukan. Proses dan proses sistem yang menjalankan prosedur tersimpan yang diperluas tidak dapat diakhapi.
Gunakan KILL dengan hati-hati, terutama ketika proses kritis berjalan. Anda tidak dapat membunuh proses Anda sendiri. Anda juga tidak boleh mematikan proses berikut:
- PERINTAH MENUNGGU
- CHECKPOINT TIDUR
- LAZY WRITER
- LOCK MONITOR
- HANDLER SINYAL
Gunakan @@SPID untuk menampilkan nilai ID sesi untuk sesi saat ini.
Untuk mendapatkan laporan nilai ID sesi aktif, kueri kolom session_id tampilan manajemen dinamis sys.dm_tran_locks, sys.dm_exec_sessions, dan sys.dm_exec_requests. Anda juga dapat melihat kolom SPID yang dikembalikan oleh prosedur tersimpan sistem sp_who. Jika pembatalan sedang berlangsung untuk SPID tertentu, kolom cmd dalam hasil sp_who yang ditetapkan untuk SPID tersebut menunjukkan KILLED/ROLLBACK.
Ketika koneksi tertentu memiliki kunci pada sumber daya database dan memblokir kemajuan koneksi lain, ID sesi koneksi pemblokiran muncul di blocking_session_id
kolom sys.dm_exec_requests
atau kolom yang blk
dikembalikan oleh sp_who
.
Perintah KILL dapat digunakan untuk menyelesaikan transaksi terdistribusi yang ragu. Transaksi ini adalah transaksi terdistribusi yang belum terselesaikan yang terjadi karena restart server database atau koordinator MS DTC yang tidak dienkripsi. Untuk informasi selengkapnya tentang transaksi yang ragu, lihat bagian "Penerapan Dua Fase" di Menggunakan Transaksi Yang Ditandai untuk Memulihkan Database Terkait Secara Konsisten (Model Pemulihan Penuh).
Menggunakan DENGAN STATUSONLY
KILL WITH STATUSONLY menghasilkan laporan jika ID sesi atau UOW digulung balik karena pernyataan UOW ID|sesi KILL sebelumnya. Laporan kemajuan menyatakan jumlah pembatalan selesai (dalam persen) dan perkiraan lama waktu tersisa (dalam detik). Laporan menyatakannya dalam formulir berikut:
Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds
Jika pembatalan ID sesi atau UOW selesai sebelum pernyataan KILL session ID|UOW WITH STATUSONLY berjalan, KILL session ID|UOW WITH STATUSONLY mengembalikan kesalahan berikut:
"Msg 6120, Level 16, State 1, Line 1"
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."
Kesalahan ini juga terjadi jika tidak ada ID sesi atau UOW yang digulung balik
Laporan status yang sama dapat diperoleh dengan mengulangi pernyataan UOW ID|sesi KILL yang sama tanpa menggunakan opsi WITH STATUSONLY. Namun, kami tidak menyarankan untuk mengulangi opsi dengan cara ini. Jika Anda mengulangi pernyataan ID sesi KILL, proses baru mungkin berhenti jika pembatalan selesai dan ID sesi ditetapkan kembali ke tugas baru sebelum pernyataan KILL baru berjalan. Cegah proses baru berhenti dengan menentukan WITH STATUSONLY.
Izin
SQL Server: Memerlukan izin UBAH KONEKSI APA PUN. ALTER ANY CONNECTION disertakan dengan keanggotaan dalam peran server tetap sysadmin atau processadmin.
SQL Database: Memerlukan izin KILL DATABASE CONNECTION. Login utama tingkat server memiliki KONEKSI KILL DATABASE.
Microsoft Fabric: Memerlukan izin Admin.
Azure Synapse Analytics: Memerlukan izin Admin.
Contoh
J. Menggunakan KILL untuk menghentikan sesi
Contoh berikut menunjukkan cara menghentikan ID 53
sesi .
KILL 53;
GO
B. Menggunakan KILL session ID WITH STATUSONLY untuk mendapatkan laporan kemajuan
Contoh berikut menghasilkan status proses pemutaran kembali untuk ID sesi tertentu.
KILL 54;
KILL 54 WITH STATUSONLY;
GO
Berikut adalah hasil yang ditetapkan.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.
C. Menggunakan KILL untuk menghentikan transaksi terdistribusi tanpa intim
Contoh berikut menunjukkan cara menghentikan transaksi terdistribusi tanpa intim (ID sesi = -2) dengan UOW dari D5499C66-E398-45CA-BF7E-DC9C194B48CF
.
KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF';
Lihat Juga
KILL STATS JOB (Transact-SQL)
LANGGANAN PEMBERITAHUAN KILL QUERY (Transact-SQL)
Fungsi Bawaan (Transact-SQL)
SHUTDOWN (Transact-SQL)
@@SPID (T-SQL)
sys.dm_exec_requests (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)
sys.dm_tran_locks (T-SQL)
sp_lock (T-SQL)
sp_who (T-SQL)
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