Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: .NET Framework
.NET
Standard
De Microsoft SqlClient-gegevensprovider voor SQL Server bevat verbindingsobjecten met twee gebeurtenissen die u kunt gebruiken om informatieve berichten op te halen uit een gegevensbron of om te bepalen of de status van een verbinding is gewijzigd. In de volgende tabel worden de gebeurtenissen van het verbindingsobject beschreven.
| Event | Description |
|---|---|
| InfoMessage | Treedt op wanneer een informatief bericht wordt geretourneerd vanuit een gegevensbron. Informatieve berichten zijn berichten van een gegevensbron die niet resulteren in een uitzondering die wordt gegenereerd. |
| Statuswijziging | Treedt op wanneer de status van de verbinding wordt gewijzigd. |
Werken met de InfoMessage-gebeurtenis
U kunt waarschuwingen en informatieve berichten ophalen uit een SQL Server-gegevensbron met behulp van de InfoMessage gebeurtenis van het SqlConnection object. Fouten die worden geretourneerd uit de gegevensbron met een ernstniveau van 11 tot en met 16, zorgen ervoor dat er een uitzondering wordt gegenereerd. De InfoMessage gebeurtenis kan echter worden gebruikt om berichten op te halen uit de gegevensbron die niet aan een fout zijn gekoppeld. Met Microsoft SQL Server wordt elke fout met een ernst van 10 of minder beschouwd als een informatief bericht en kan worden vastgelegd met behulp van de InfoMessage gebeurtenis. Raadpleeg het artikel Fouternst van de Database Engine voor meer informatie.
De InfoMessage gebeurtenis ontvangt een SqlInfoMessageEventArgs object dat, in de eigenschap Fouten , een verzameling berichten van de gegevensbron bevat. U kunt een query uitvoeren op de foutobjecten in deze verzameling voor het foutnummer, de berichttekst en de bron van de fout. De Microsoft SqlClient-gegevensprovider voor SQL Server bevat ook details over de database, opgeslagen procedure en regelnummer waaruit het bericht afkomstig is.
Example
In het volgende codevoorbeeld ziet u hoe u een gebeurtenis-handler voor de InfoMessage gebeurtenis toevoegt.
// 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);
}
};
Fouten verwerken als informatieve berichten
De InfoMessage gebeurtenis wordt normaal gesproken alleen geactiveerd voor informatieve en waarschuwingsberichten die vanaf de server worden verzonden. Wanneer er echter een werkelijke fout optreedt, wordt de uitvoering van de methode ExecuteNonQuery of ExecuteReader die de serverbewerking heeft gestart gestopt en wordt er een uitzondering gegenereerd.
Als u de rest van de instructies in een opdracht wilt blijven verwerken, ongeacht eventuele fouten die door de server worden geproduceerd, stelt u de FireInfoMessageEventOnUserErrors eigenschap van de SqlConnection opdracht in op true. Als u deze eigenschap instelt, wordt de gebeurtenis InfoMessage geactiveerd voor fouten in plaats van een uitzondering te genereren en de verwerking te onderbreken. De clienttoepassing kan deze gebeurtenis vervolgens afhandelen en reageren op foutvoorwaarden.
Opmerking
Een fout met een ernstniveau van 17 of hoger waardoor de server stopt met het verwerken van de opdracht, moet worden verwerkt als een uitzondering. In dit geval wordt er een uitzondering gegenereerd, ongeacht hoe de fout wordt verwerkt in de InfoMessage gebeurtenis.
Werken met de StateChange-gebeurtenis
De stateChange-gebeurtenis treedt op wanneer de status van een verbinding wordt gewijzigd. De stateChange-gebeurtenis ontvangt StateChangeEventArgs die u in staat stelt om de wijziging in de status van de verbinding te bepalen met behulp van de eigenschappen OriginalState en CurrentState . De eigenschap OriginalState is een ConnectionState opsomming die de status van de verbinding aangeeft voordat deze is gewijzigd. CurrentState is een ConnectionState opsomming die de status van de verbinding aangeeft nadat deze is gewijzigd.
In het volgende codevoorbeeld wordt de stateChange-gebeurtenis gebruikt om een bericht naar de console te schrijven wanneer de status van de verbinding verandert.
// 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);
};