Je travaille sur une grande base de code SQL Server, dont certaines sont en développement depuis au moins SQL 7 et peut-être avant.Cette syntaxe RAISERROR non documentée at-elle déjà été documentée et par la suite déconseillée?
Tout au long de la base de code, le procédé de déclencher une erreur consiste à utiliser la syntaxe suivante qui est, pour autant que je sache, sans papiers
RAISERROR <error number> <error message>
Le error number
peut être toute valeur supérieure à 13 000; Aucune entrée correspondante ne doit exister dans la table sys.messages
. Le error message
peut également être arbitraire.
Le code exemple suivant
raiserror 13000 'test error'
produit la sortie suivante
Msg 13000, Level 16, State 1, Line 1
test error
Ce comportement est le même dans SQL 2000, 2005 et 2008 (je ne l'ai pas testé 2008 R2).
Nous allons essayer de standardiser une méthode supportée, mais ma question est de savoir d'où vient ce comportement en premier lieu.
Je suppose que cela doit avoir été documenté, le comportement pris en charge, mais des copies de livres en ligne pour SQL 7 et avant sont difficiles à trouver. Est-ce que quelqu'un sait quand cela a été soutenu ou quand il a été déprécié, si jamais?
Modifier Pour clarifier les choses, selon le documentation, la syntaxe RAISERROR
pris en charge est
RAISERROR ({ msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ])
[ WITH option [ ,...n ] ]
Et un numéro d'erreur utilisateur qui n'est pas défini dans sys.messages
devrait être soulevée avec un identifiant de message d'erreur de 50000
D'accord - mais la syntaxe n'est pas documentée, et selon les docs, toute erreur d'utilisateur non définie dans 'sys.messages' devrait être augmentée avec un code d'erreur de 50000 –