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: .NET Framework
.NET
.NET Standard
SQL Server için Microsoft SqlClient Veri Sağlayıcısı'nın, bir veri kaynağından bilgi iletileri almak veya Bağlantı durumunun değişip değişmediğini belirlemek için kullanabileceğiniz iki olay içeren Bağlantı nesneleri vardır. Aşağıdaki tabloda Connection nesnesinin olayları açıklanmaktadır.
| Event | Description |
|---|---|
| InfoMessage | Veri kaynağından bilgilendiren bir ileti döndürülürse gerçekleşir. Bilgilendirme iletileri, bir veri kaynağından gelen ve bir özel durumun oluştuğuna neden olmayan iletilerdir. |
| Durum Değişikliği | Bağlantının durumu değiştiğinde gerçekleşir. |
InfoMessage olayıyla çalışmak
Nesnenin InfoMessage olayını kullanarak SqlConnection bir SQL Server veri kaynağından uyarılar ve bilgilendirme iletileri alabilirsiniz. Ciddiyet seviyesi 11 ile 16 arasında olan veri kaynağından döndürülen hatalar bir istisna yaratır. Ancak olay, InfoMessage veri kaynağından bir hatayla ilişkilendirilmeyen iletileri almak için kullanılabilir. Microsoft SQL Server'da, önem derecesi 10 veya daha az olan tüm hatalar bilgilendirme amaçlı bir ileti olarak kabul edilir ve olay kullanılarak InfoMessage yakalanabilir. Daha fazla bilgi için Veritabanı Altyapısı Hata Önem Dereceleri makalesine bakın.
OlayInfoMessage, SqlInfoMessageEventArgs özelliğinde veri kaynağından gelen iletilerin bir koleksiyonunu içeren bir nesne alır. Hata numarası, ileti metni ve hatanın kaynağı için bu koleksiyondaki Error nesnelerini sorgulayabilirsiniz. SQL Server için Microsoft SqlClient Veri Sağlayıcısı ayrıca iletinin geldiği veritabanı, saklı yordam ve satır numarası hakkında ayrıntılı bilgi içerir.
Example
Aşağıdaki kod örneği, bir olay için olay işleyicisinin InfoMessage nasıl ekleneceğini gösterir.
// Assumes that connection represents a SqlConnection object.
connection.InfoMessage +=
(object sender, SqlInfoMessageEventArgs args) =>
{
foreach (SqlError err in args.Errors)
{
Console.WriteLine(
"The {0} has received a severity {1}, state {2} error number {3}\n" +
"on line {4} of procedure {5} on server {6}:\n{7}",
err.Source, err.Class, err.State, err.Number, err.LineNumber,
err.Procedure, err.Server, err.Message);
}
};
Hataları InfoMessages olarak işleme
Olay InfoMessage normalde yalnızca sunucudan gönderilen bilgilendirme ve uyarı iletileri için tetiklenir. Ancak, gerçek bir hata oluştuğunda, sunucu işlemini başlatan ExecuteNonQuery veya ExecuteReader yönteminin yürütülmesi durdurulur ve bir özel durum oluşturulur.
Sunucunun oluşturduğu hataları önemsemeden bir komuttaki diğer deyimleri işlemeye devam etmek istiyorsanız, FireInfoMessageEventOnUserErrors öğesinin SqlConnection özelliğini true olarak ayarlayın. Bu özelliği ayarlamak, bağlantının bir özel durum oluşturup işlemeyi kesintiye uğratması yerine hatalar için InfoMessage olayını tetiklemesine neden olur. İstemci uygulaması daha sonra bu olayı işleyebilir ve hata koşullarına yanıt verebilir.
Uyarı
Sunucunun komutu işlemeyi durdurmasına neden olan önem düzeyi 17 veya üzeri olan bir hata özel durum olarak işlenmelidir. Bu durumda, hatanın InfoMessage olayında nasıl işlendiğinden bağımsız olarak bir istisna atılır.
StateChange olayıyla çalışmak
StateChange olayı, bir Bağlantının durumu değiştiğinde gerçekleşir. StateChange olayı, StateChangeEventArgs ve CurrentState özelliklerini kullanarak Bağlantının durumundaki değişikliği belirlemenize olanak tanıyan bir olay alır. OriginalState özelliği, ConnectionState değişmeden önceki durumunu gösteren bir numaralandırmadır. CurrentState, ConnectionState değiştirildikten sonra durumunu gösteren bir numaralandırmadır.
Aşağıdaki kod örneği, Bağlantının durumu değiştiğinde konsola ileti yazmak için StateChange olayını kullanır.
// Assumes that connection represents a SqlConnection object.
connection.StateChange +=
(object sender, StateChangeEventArgs args) =>
{
Console.WriteLine(
"The current Connection state has changed from {0} to {1}.",
args.OriginalState, args.CurrentState);
};
Ayrıca bakınız
- Veri kaynağına bağlanma
- SQL Server için Microsoft ADO.NET