à: SQL Server Tutoriel Pour les Débutants et les Professionnels
Comment Élever les Erreurs Explicitement dans SQL Server
Dans cet article, Je vais discuter de la façon d’élever les erreurs explicitement dans SQL Server avec quelques exemples ainsi que nous allons également examiner les différentes options que nous pouvons utiliser avec Raiserror dans SQL Server., Veuillez lire notre article précédent où nous avons discuté de l’exemple en temps réel de la fonction système D’erreur de relance. Dans le cadre de cet article, nous allons discuter des pointeurs suivants.
- Comment générer explicitement des erreurs dans SQL Server?
- Augmenter erreur en utilisant instruction RAISERROR dans SQL Server
- Augmenter Erreur à l’aide de jeter de l’instruction SQL Server
- Quelle est la différence entre RAISERROR fonction et l’instruction throw?
- comprendre L’instruction RaiseError avec L’option Log.
- Comment générer des erreurs en stockant le message d’erreur dans la table SysMessage.,
comment générer explicitement des erreurs dans SQL Server?
généralement, les erreurs soulevées dans un programme pour des raisons prédéfinies comme diviser un nombre par zéro, violation de la clé primaire, violation de la vérification, violation de l’intégrité référentielle, etc. Mais si nous voulons, nous pouvons générer une erreur dans vos programmes de deux façons différentes.,
- instruction Raiserror
- instruction throw (nouvelle fonctionnalité de SQL Server 2012)
Raiserror Syntaxe: Raiserror (errorid/errormsg, la GRAVITÉ de l’état)
lancer la Syntaxe: Jeter errorid, errormsg, de l’état
Exemple: Augmenter erreur en utilisant instruction RAISERROR dans SQL Server.
dans la procédure stockée suivante, nous déclenchons une erreur lorsque la division est 1 en utilisant L’instruction RAISERROR.,
Exemple d’exécution: EXEC spDivideBy1 10, 1
Exemple: Augmenter Erreur en utilisant instruction throw dans SQL Server.
la procédure ci-dessus peut également être réécrite à l’aide d’une instruction throw à la place de Raiserror comme suit.,
EXÉCUTION: EXEC spDivideBy2 10, 1
Quelle est la différence entre RAISERROR fonction et l’instruction throw?
si nous utilisons l’une des deux instructions dans un programme pour déclencher une erreur sans try and catch blocks, L’instruction RAISERROR après avoir déclenché l’erreur continuera l’exécution du programme alors que l’instruction throw terminera le programme anormalement sur cette ligne., Mais s’ils sont utilisés sous try block, les deux se comporteront de la même manière, c’est-à-dire sauteront directement pour attraper le bloc d’où l’erreur a été déclenchée.
L’instruction RAISERROR donnera une option pour spécifier la gravité du message d’erreur alors que nous n’avons pas cette option en cas d’instruction throw où tous les messages d’erreur auront une gravité par défaut de 16.,
en cas de RAISERROR, il y a une chance d’enregistrer le message d’erreur dans le fichier journal du serveur en utilisant l’option with log alors que nous ne pouvons pas le faire en cas d’instruction throw.
en cas de throw, nous devons spécifier à la fois l’errorid et le message d’erreur pour générer l’erreur alors qu’en cas de RAISERROR, nous pouvons spécifier id ou message., Si l’id n’est pas spécifié l’ID d’erreur par défaut est 50000 mais si nous voulons spécifier uniquement l’id d’erreur, nous devons d’abord ajouter le message d’erreur dans la table sysmessage en spécifiant un id unique à la table.
OPTIONS avec L’instruction RAISERROR:
avec Log: en utilisant cette option dans L’instruction RAISERROR, nous pouvons enregistrer le message d’erreur dans le fichier journal SQL Server afin que si les erreurs sont fatales, l’administrateur de la base de données puisse s’occuper de corriger ces erreurs.,
Si la gravité de l’erreur est supérieure à 20 précisant les Journaux option est obligatoire. Pour tester cela, modifiez la procédure spDivideBy1 en modifiant l’instruction raiserror comme suit
RAISERROR (‘DIVISOR CANNOT BE ONE’, 16, 1) avec LOG
Voici la procédure complète
exécutez maintenant la procédure et chaque fois que vous L’erreur donnée soulève nous pouvons regarder les messages d’erreur enregistrés sous le fichier journal SQL Server. Pour afficher le fichier journal., Dans l’Explorateur d’objets, accédez au nœud de gestion SQL Server log node et ouvrez le fichier journal actuel en double-cliquant dessus comme indiqué ci-dessous.,g
RAISERROR (« LE NOMBRE %d NE peut pas ÊTRE DIVISÉ PAR %d’,16, 1, @No1, @No2)AVEC LOG
la levée des Erreurs En stockant le message d’Erreur dans SysMessage table:
Nous pouvons relever une erreur sans donner le message d’erreur dans l’instruction RAISERROR mais à la place du message d’erreur nous avons besoin de la spécifier l’id d’erreur et de spécifier l’id d’erreur nous avons besoin pour l’enregistrement id d’erreur avec le message d’erreur dans SysMessage table en utilisant le système de procédure définies « SP_ADDMESSAGE”., 16, ‘DIVIDE BY ONE ERROR ENCOUNTERED’
modifiez maintenant la procédure en modifiant L’instruction RAISERROR comme suit
RAISERROR (51000,16, 1)avec LOG
en supprimant les messages d’erreur de la table sysmessages:
syntaxe: sp_dropmessage <erreur ID>
exemple: exec sp_dropmessage 51000
dans le prochain article, je vais discuter de l’implémentation try-catch dans SQL Server pour gérer l’erreur dans SQL Server., Ici, dans cet article, j’essaie d’expliquer comment soulever des erreurs explicitement dans SQL Server étape par étape avec quelques exemples.