2015-03-16 7 views
15

SqlCommand sınıfı belgelerine göre, tek bir komut iptal sağlar, bir Cancel yöntemi vardır.ServerConnection.Cancel yöntemi

Ben smo Server class aracılığıyla çalıştırılan komutlar için eşdeğer bir yöntem için arıyorum. ServerConnection sınıf (sunucu sınıfının ConnectionContext alanı) has a Cancel method ama dokümantasyon ne yaptığını üzerinde açık değildir.

+4

Ben smo kaçınarak öneriyoruz. Uzaktan diş güvenliğini bile içermeyen de dahil olmak üzere bir dizi problem var. Ben onu fırlatıp bittim ve sys.' görünümleriyle her şeyi yaptım. –

+0

Belki de sunucu bağlantısının bağlantısını kesmek mi istiyorsunuz? https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.common.connectionmanager.disconnect – Chuck

+1

SQL Profiler o da ne yaptığı hakkında açık olmak görünmüyor. Her ne olursa olsun, SQL Profiler'de bir çıkış olayı veya farkedebileceğim başka bir şey olarak görünmez. Bağlantıyı iptal edebilir ve sonra herhangi bir hata yapmadan ne yaptığımı devam edebilirim. Jonathan Allen'la birlikteyim. SMO'lar olmadan yapın. – quest4truth

cevap

1

SeverConnection.Cancel() Yöntem SqlCommand.Cancel() yönteme benzer şekilde çalışır ve Documentation devletler:

iptal etmek bir şey yoksa, hiçbir şey olmuyor. Ancak, işlemde bir komut varsa ve iptal etme girişimi başarısız olursa, istisna oluşturulur. Eğer ExecuteReader çağırırsanız bazılarında

, nadir, olgu, daha sonra komut SQL Server gönderilmeyecektir iptal edip sonuç kümesi can, İptal çağrı ardından İptal çağırmadan önce (implicitily veya açıkça) Yakın arama ve Kapat aradıktan sonra akışa devam et. Bunu önlemek için, , okuyucuyu veya bağlantısını kapatmadan önce İptal'i aradığınızdan emin olun.

Eğer close() yöntemine çağrı önce ararsanız iptal yöntem çalışacağını Anlamı. close() yöntemi çağırmak için sonra

sen sonra ararsanız, komut sonuçlanan sql gönderilmeyecektir sql akışı devam ediyor. Orada sürecinde bir komuttur ve iptal denemesi, başarısız olursa istisna Bu durumda oluşturulur olarak

Üstelik bir hata almaz.