Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Oturum kimliğini veya iş birimini (UOW) temel alan bir kullanıcı işlemini sonlandırır. Belirtilen oturum kimliğinin veya UOW'nin geri alınması gereken çok fazla iş varsa deyiminin KILL tamamlanması biraz zaman alabilir. İşlemin tamamlanması daha uzun sürer, özellikle de işlem uzun bir işlem geri alınıyorsa.
KILL , belirtilen oturum kimliğiyle ilişkili işlemleri dahili olarak durduran normal bir bağlantıyı sonlandırır. Bazen Microsoft Dağıtılmış İşlem Düzenleyicisi (MS DTC) kullanımda olabilir. MS DTC kullanılıyorsa, yalnız bırakılmış ve şüpheli dağıtılmış işlemleri sonlandırmak için deyimini de kullanabilirsiniz.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği söz dizimi:
KILL { session_id [ WITH STATUSONLY ] | UOW [ WITH STATUSONLY | COMMIT | ROLLBACK ] }
[ ; ]
Azure Synapse Analytics, Analytics Platform Sistemi (PDW) ve Microsoft Fabric için söz dizimi:
KILL 'session_id'
[ ; ]
Arguments
session_id
Sona erecek işlemin oturum kimliği.
session_id , bağlantı yapıldığında her kullanıcı bağlantısına atanan benzersiz bir int'dir . Oturum kimliği değeri, bağlantı süresi boyunca bağlantıya bağlıdır. Bağlantı sona erdiğinde, tamsayı değeri serbest bırakılır ve yeni bir bağlantıya yeniden atanabilir.
Aşağıdaki sorgu, sonlandırmak istediğiniz sorguyu session_id belirlemenize yardımcı olabilir:
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
Dağıtılmış işlemlerin iş kimliği (UOW) birimini tanımlar.
UOW , dinamik yönetim görünümünün sütunundan request_owner_guidsys.dm_tran_locks elde edilebilen bir GUID'dir.
UOW , hata günlüğünden veya MS DTC izleyicisi aracılığıyla da elde edilebilir. Dağıtılmış işlemleri izleme hakkında daha fazla bilgi için MS DTC belgelerine bakın.
Çözümlenmemiş dağıtılmış işlemleri durdurmak için kullanın KILL <UOW> . Bu işlemler herhangi bir gerçek oturum kimliğiyle ilişkili değildir, bunun yerine yapay olarak oturum kimliği = -2ile ilişkilendirilir. Bu oturum kimliği, , sys.dm_tran_locksveya sys.dm_exec_sessions dinamik yönetim görünümlerindeki oturum kimliği sütununu sys.dm_exec_requestssorgulayarak çözümlenmemiş işlemleri tanımlamayı kolaylaştırır.
SADECE STATİTE İLE
Belirtilen bir UOW için ilerleme raporu oluşturmak için kullanılır veya session_id önceki KILL bir deyim nedeniyle geri alınır.
KILL WITH STATUSONLY UOW veya oturum kimliğini sona erdirmiyor veya geri almaz. Komut yalnızca geri alma işleminin geçerli ilerleme durumunu görüntüler.
COMMIT ILE
İşleme ile çözümlenmemiş dağıtılmış bir işlemi sonlandırmak için kullanılır. Yalnızca dağıtılmış işlemler için geçerli olan bu seçeneği kullanmak için bir UOW belirtmeniz gerekir. Daha fazla bilgi için bkz. dağıtılmış işlemler.
ROLLBACK ILE
Geri alma ile çözümlenmemiş dağıtılmış bir işlemi sonlandırmak için kullanılır. Yalnızca dağıtılmış işlemler için geçerli olan bu seçeneği kullanmak için bir UOW belirtmeniz gerekir. Daha fazla bilgi için bkz. dağıtılmış işlemler.
Remarks
KILL genellikle kilitlerle diğer önemli işlemleri engelleyen bir işlemi sonlandırmak için kullanılır.
KILL gerekli sistem kaynaklarını kullanan bir sorguyu yürüten bir işlemi durdurmak için de kullanılabilir. Genişletilmiş saklı yordamı çalıştıran sistem işlemleri ve işlemleri sonlandırılamaz.
Özellikle kritik işlemler çalışırken dikkatli kullanın KILL . Kendi işlemini sonlandıramazsın. Ayrıca aşağıdaki işlemleri sonlandırmamalısınız:
AWAITING COMMANDCHECKPOINT SLEEPLAZY WRITERLOCK MONITORSIGNAL HANDLER
Geçerli oturum için oturum kimliği (SPID) değerini görüntülemek için kullanın @@SPID .
Etkin oturum kimliği değerlerinin raporunu almak için , session_idve sys.dm_tran_locks dinamik yönetim görünümlerinin sütununu sys.dm_exec_sessionssorgularsys.dm_exec_requests. Sistem saklı yordamının SPIDsp_who döndürdüğü sütunu da görüntüleyebilirsiniz. Belirli bir oturum kimliği için geri alma işlemi sürüyorsa, cmd bu oturum kimliği için sonuç kümesindeki sp_who sütun öğesini gösterir KILLED/ROLLBACK.
Belirli bir bağlantının veritabanı kaynağında kilidi olduğunda ve başka bir bağlantının ilerleme durumunu engellediğinde, engelleyen bağlantının oturum kimliği veya blocking_session_id tarafından sys.dm_exec_requestsdöndürülen sütunda blksp_who gösterilir.
Komutu, KILL şüpheli dağıtılmış işlemleri çözmek için kullanılabilir. Bu işlemler, veritabanı sunucusunun veya MS DTC düzenleyicisinin planlanmamış yeniden başlatmaları nedeniyle oluşan çözümlenmemiş dağıtılmış işlemlerdir. Şüpheli işlemler hakkında daha fazla bilgi için, İlgili Veritabanlarını Tutarlı Bir Şekilde Kurtarmak için İşaretli İşlemleri Kullanma bölümündeki "Two-Phase İşleme" bölümüne bakın.
STATUSONLY ile kullanma
KILL WITH STATUSONLY oturum kimliği veya UOW önceki KILL <session ID> bir veya KILL <UOW> deyim nedeniyle geri alınırsa bir rapor oluşturur. İlerleme raporu, tamamlanan geri alma miktarını (yüzde) ve kalan tahmini süre uzunluğunu (saniye cinsinden) belirtir. Rapor bunu aşağıdaki biçimde belirtir:
Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds
Oturum kimliğinin veya UOW'sinin geri alınması veya KILL <session ID> WITH STATUSONLY deyimi çalışmadan önce KILL <UOW> WITH STATUSONLY biterse, KILL ... WITH STATUSONLY aşağıdaki hatayı döndürür:
"Msg 6120, Level 16, State 1, Line 1"
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."
Bu hata, hiçbir oturum kimliği veya UOW geri alınmazsa da oluşur.
Aynı durum raporu, seçeneği kullanılmadan KILL aynı WITH STATUSONLY deyim yinelenerek elde edilebilir. Ancak, seçeneği bu şekilde tekrarlamanızı önermiyoruz. Bir KILL <session_id> deyimi yinelerseniz, geri alma işlemi tamamlanırsa ve yeni deyim çalışmadan önce oturum kimliği yeni bir göreve yeniden atanırsa yeni KILL işlem durdurulabilir. belirterek yeni işlemin durdurulmasını önleyin WITH STATUSONLY.
Permissions
SQL Server: İzin gerektirir ALTER ANY CONNECTION .
ALTER ANY CONNECTIONsysadmin veya processadmin sabit sunucu rollerine üye olarak eklenir.
SQL Veritabanı: İzin gerektirir KILL DATABASE CONNECTION . Sunucu düzeyinde asıl oturum açma iznine KILL DATABASE CONNECTION sahiptir.
Microsoft Fabric Veri Ambarı: Öğeyi izleme izni veya Çalışma Alanı Yöneticileri rolü üyeliği gerektirir.
Microsoft Fabric'te SQL veritabanı:KILL DATABASE CONNECTION SQL veritabanı altyapısında veya Yapı çalışma alanında Öğe yazma izni gerektirir.
Azure Synapse Analytics: Yönetici izinleri gerektirir.
Examples
A. Oturumu durdurmak için KILL kullanma
Aşağıdaki örnekte oturum kimliğinin nasıl durdurulduğu gösterilmektedir 53.
KILL 53;
GO
B. İlerleme raporu almak için STATUSONLY ile KILL oturum kimliğini kullanma
Aşağıdaki örnek, belirli bir oturum kimliği için geri alma işleminin durumunu oluşturur.
KILL 54;
KILL 54 WITH STATUSONLY;
GO
Sonuç kümesi aşağıdadır.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.
C. Yalnız bırakılmış dağıtılmış bir işlemi durdurmak için KILL kullanma
Aşağıdaki örnek, -2değeriyle yalnız bırakılmış dağıtılmış bir işlemin (oturum kimliği = D5499C66-E398-45CA-BF7E-DC9C194B48CF) nasıl durdurulacağını gösterir.
KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF';