Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: .NET Framework
.NET
Standard
Zprostředkovatel dat Microsoft SqlClient pro SQL Server obsahuje objekty připojení se dvěma událostmi, které můžete použít k načtení informačních zpráv ze zdroje dat nebo k určení, jestli se změnil stav připojení . Následující tabulka popisuje události objektu Connection .
| Event | Description |
|---|---|
| InfoMessage | Nastane, když se ze zdroje dat vrátí informační zpráva. Informační zprávy jsou zprávy ze zdroje dat, které nemají za následek vyvolání výjimky. |
| ZměnaStavu | Nastane, když se změní stav připojení . |
Práce s událostí InfoMessage
Pomocí události InfoMessage objektu můžete načíst upozornění a informační zprávy ze zdroje SqlConnection dat SQL Serveru. Chyby vrácené ze zdroje dat s úrovní závažnosti 11 až 16 způsobují vyvolání výjimky. InfoMessage Událost se ale dá použít k získání zpráv ze zdroje dat, které nejsou přidružené k chybě. U Microsoft SQL Serveru se jakákoli chyba se závažností 10 nebo méně považuje za informační zprávu a lze ji zachytit pomocí InfoMessage události. Další informace najdete v článku Závažnosti chyb databázového stroje .
Událost InfoMessage obdrží SqlInfoMessageEventArgs objekt obsahující ve své vlastnosti Errors kolekci zpráv ze zdroje dat. Na objekty Error v této kolekci můžete zadat dotaz na číslo chyby, text zprávy a zdroj chyby. Zprostředkovatel dat Microsoft SqlClient pro SQL Server obsahuje také podrobnosti o databázi, uložené proceduře a čísle řádku, ze kterého zpráva pochází.
Example
Následující příklad kódu ukazuje, jak přidat obslužnou rutinu pro událost InfoMessage.
// 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);
}
};
Zpracování chyb ve formátu InfoMessages
Událost InfoMessage se obvykle aktivuje pouze pro informační a upozorňující zprávy odeslané ze serveru. Pokud však dojde k skutečné chybě, spuštění ExecuteNonQuery nebo ExecuteReader metody, která zahájila operaci serveru, je zastavena a je vyvolána výjimka.
Chcete-li pokračovat ve zpracování zbývajících příkazů bez ohledu na chyby způsobené serverem, nastavte FireInfoMessageEventOnUserErrors vlastnost SqlConnection na truehodnotu. Nastavení této vlastnosti způsobí, že připojení aktivuje událost InfoMessage pro chyby, místo aby vyvolalo výjimku a přerušilo zpracování. Klientská aplikace pak může tuto událost zpracovat a reagovat na chybové stavy.
Poznámka:
Chyba s úrovní závažnosti 17 nebo vyšší, která způsobí, že server přestane zpracovávat příkaz, musí být zpracován jako výjimka. V tomto případě se vyvolá výjimka bez ohledu na způsob zpracování chyby v InfoMessage události.
Práce s událostí StateChange
Událost StateChange nastane, když se stav připojení změní. Událost StateChange přijímá StateChangeEventArgs , která umožňuje určit změnu stavu připojení pomocí OriginalState a CurrentState vlastnosti. OriginalState vlastnost je ConnectionState výčet, který označuje stav Připojení před změnou. CurrentState je ConnectionState výčet, který označuje stav připojení po změně.
Následující příklad kódu používá StateChange událost k zápisu zprávy do konzoly při změně stavu připojení .
// 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);
};