Ich arbeite an einer großen SQL Server-Codebase, von denen einige seit mindestens SQL 7 und möglicherweise schon in Entwicklung sind.Wurde diese undokumentierte RAISERROR-Syntax jemals dokumentiert und später veraltet?
Während die Codebasis, wobei das Verfahren einen Fehler des Anhebens ist die folgende Syntax verwendet werden, die ist, so weit wie ich sagen kann, nicht dokumentierte
RAISERROR <error number> <error message>
Die error number
jeden Wert größer als 13000 sein kann; In der Tabelle sys.messages
muss kein entsprechender Eintrag vorhanden sein. Die error message
kann auch beliebig sein.
Der folgende Beispielcode
raiserror 13000 'test error'
die folgende Ausgabe
Msg 13000, Level 16, State 1, Line 1
test error
Dieses Verhalten ist das gleiche in SQL 2000, 2005 und 2008 (die ich getestet habe nicht 2008 R2) erzeugt.
Wir werden versuchen, auf eine unterstützte Methode zu standardisieren, aber meine Frage ist, wo dieses Verhalten von Anfang an kam.
Ich nehme an, dies muss einmal dokumentiert worden sein, unterstützte Verhalten, aber Kopien von Büchern online für SQL 7 und vorher sind schwer zu finden. Weiß jemand, wann dies unterstützt wurde oder wann es veraltet war, wenn überhaupt?
Bearbeiten Um zu klären, nach den documentation, die unterstützten RAISERROR
Syntax
RAISERROR ({ msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ])
[ WITH option [ ,...n ] ]
Und jede Benutzer Fehlernummer, die nicht in sys.messages
definiert ist, sollte mit einer Fehlermeldung ID 50000
Einverstanden - aber die Syntax ist nicht dokumentiert, und gemäß den Dokumenten sollte jeder Benutzerfehler, der nicht in 'sys.messages' definiert ist, mit einem Fehlercode von 50000 ausgelöst werden –