Verarbeitung der Daten-Schicht mittels SQL Server-Fehler



Die Entwickler streben ordnungsgemäß zu behandeln das Unerwartete, so dass Anwender keine Gedanken über himmlische-artigen System Fehlermeldungen Sorgen. Aus diesem Grund ist jeder Exception-Handling. NET-Anwendungen zu einem festen Bestandteil. Try / catch-Block können Ausnahmen und Control-Anwendung unter dem Aspekt der Umsetzung zu fangen. Interagieren Sie mit der Datenbank auftreten, wenn eine Menge Fehler, aber viele Entwickler nicht wissen, wie man mit den Datenbank-Layer, der einen Fehler umzugehen. In diesem Papier werden wir untersuchen, wie SQLServer und T-SQL-Code verwenden, um Fehler in Ihrer Datenbank zu behandeln.

Fehlerbehandlung in T-SQL

SQLServer SQL-Dialog ermöglicht Ihnen die einfache Handhabung des Prozesses kann gespeichert werden, funktionieren in nicht-tödlichen Fehler aufgetreten ist, aber nicht alle Fehler sind leichter zu handhaben. In der Tat sind tödliche und nicht tödliche Fehler viele. Was ist fatal, was nicht tödlichen, das ist nicht sehr gut dokumentiert, aber Ihre Anwendung Code kann immer mit try / catch-Block zu fatalen Fehler in der Datenbank zu behandeln. Bei allen anderen Fehlern, können Sie die folgenden Techniken verwenden.

Services

Sie sollten die Transaktion Code in die Datenbank nutzen, um sicherzustellen, dass alles kein Problem, wenn alle Änderungen abgeschlossen sind, ist. SQLServer Online-Hilfe, um die Aufgabe einer Transaktion als eine logische Einheit, die aus einer Reihe von Aussagen (SELECT, INSERT, UPDATE oder DELETE besteht beschrieben, etc). Wenn die Transaktion nicht in irgendwelche Fehler auftreten, dann werden alle Änderungen der Transaktion wird zum festen Bestandteil der Datenbank werden. Wenn ein Fehler auftritt und während dieser Zeit werden keine Änderungen an der Datenbank.

Services inbegriffen in der BEGIN TRANSACTION und END TRANSACTION-Anweisungen dazwischen. ROLLBACK TRANSACTION-Anweisung kann kündigen, werden alle Änderungen, so dass alle Änderungen nicht auftreten wird. COMMIT TRANSACTION-Anweisung kann für permanenten Änderungen genutzt werden. Nun, lassen Sie uns darüber, wie mit T-SQL-Fehler in das Geschäft zu konzentrieren.

@ @ Error

@ @ ERROR-Funktion, so dass Sie implementieren können T-SQL Fehlerbehandlung. Es gibt den Fehlercode, der durch das System zurückgegeben. Wenn kein Fehler zurückgegeben wird "0". @ @ ERROR-Funktion muss unverzüglich einberufen werden unmittelbar nach einer Erklärung, denn es wird nach jedem T-SQL-Anweisung entfernt werden.

RAISERROR

RAISERROR-Anweisung können Sie eine benutzerdefinierte Fehlermeldung erzeugen oder verwenden Sie ein Formular auf der Innenseite wurde sysmessages Nachrichten. Sie können online ihre Syntax, sondern ihrer einfachsten Form enthält eine Nachricht (für benutzerdefinierte Nachricht) oder Message-ID (für bestehende Quellen) und ihren Schweregrad und Staat. SQLServer nicht verwendet Staat, so leicht es eine Reihe an sie weitergegeben. Severity, dass die Schwere des Fehlers für 0 bis 18 Benutzer, während die 19 bis 25 für Administratoren vorbehalten.

In der Liste A, die Probe angewandte Verfahren zur Aktualisierung dieser verfügt über eine Beispieldatenbank Northwind Datensatz gespeichert:

CREATE PROCEDURE sp_UpdateCustomerPhone (@ id nvarchar (5), @ Telefon nvarchar (24), @ retvalueint Ausgang) ASBEGINBEGIN TRANSACTIONUPDATE [dbo]. [Kunden] SET [Phone] = @ Phone WHERE ([CustomerID] = @ id) IF (@ @ ERROR 0) - eine nicht-negativer Wert signalisiert eine errorBEGINROLLBACK TRANSACTION - Änderungen sind nicht permanentRAISERROR ('Update Kunden Error', 1,1) - werfen eine benutzerdefinierte Fehlermeldung - Benutzerdefinierte Fehlermeldung angezeigt, wenn Flucht vor consoleSET @ retvalue = -1 - zurück negativen Wert zu signalproblemsENDCOMMIT TRANSACTION - nehmen Sie die Änderungen permanent, so Datensatz updatedSET @ retvalue = 1 - ein positiver Rückgabewert signalssuccessRETURNEND

Liste A

Wenn kein Fehler auftritt, hat es in die angegebene Telefonnummer wird auf einen Wert übergeben, um den Prozess festgelegt. Es verwendet einen Rückgabewert Parameter, wenn es Probleme es einen negativen Wert zurück, wenn all die Dinge mit der Umsetzung der keine Probleme, es wird eine positive Rendite sind.

Mit Hilfe der gespeicherten Prozedur Rückgabewerte

Durch die gespeicherte Prozedur Rückgabewert, können wir es in unserem. NET-Code verwenden seit Jahren. SqlCommand-Objekt können Sie ganz einfach einen Parameter hinzuzufügen, um den Prozess und speichern den Rückgabewert. Parameter der Direction-Eigenschaft wird der Wert aus der gespeicherten Prozedur Anruf erhalten. Es hat zwei Eigenschaftswerte: InputOutput und Output. In unserem Beispiel verwenden wir den Output auf staatliche Wert zu erhalten.

Dieser Code wird eine einfache ASP.NET-Seite für die Northwind-Datenbank wird verwendet, um einen Kunden zu einer Datentabelle Transfer in den neuen Wert. Der id-Wert ist in der Tat in ein verstecktes Feld, wo man leicht auf die Form weitergegeben werden können gehalten werden, aber dieses Feld wird verwendet, um das zu beschreiben. Geben Sie den Wert in das Textfeld wird benutzt, um die Datenbank-Tabelle zu aktualisieren, wenn Sie die Telefonnummer ein.

Parameter ist das Objekt SqlCommand (hat sie müssen genau entspricht die gespeicherte Prozedur Parameter). Command durch ExecuteNonQuery Methode der SqlCommand-Objekt ausgeführt wird. Sobald sie ausgeführt wurde, kann der Rückgabewert Parameter abgerufen werden.

Code überprüft den Rückgabewert (-1 angegeben ein Problem), und eine Nachricht wird in einem Label-Steuerelement angezeigt werden in. Zusätzlich wird ein try / catch-Block wird verwendet, um zu erfassen die Interaktion mit der Datenbank, die während des Betriebs keine schwerwiegenden Fehler auftreten können. Siehe Liste B:

Neue Nummer: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Liste B

Liste C in die entsprechenden VB.NET-Code:

Neue Nummer: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI

Liste C

Die Datenbank umfasst alle

Gebraucht try / catch-Block. NET-Anwendung Code in die Ausnahme zu behandeln ist ein einfacher Prozess, aber Sie können die Datenbank-Layer Ausnahme überwachen. SQLServer T-SQL-Sprache Exception-Handling-Code, um Ihnen alles was Sie brauchen.