Sto lavorando su una base di codice SQL Server di grandi dimensioni, alcuni dei quali sono stati in sviluppo almeno da SQL 7 e forse prima.Questa sintassi RAISERROR non documentata è mai stata documentata e successivamente deprecata?
tutto il codebase, il metodo di generare un errore è quello di utilizzare la seguente sintassi che è, per quanto posso dire, non documentato
RAISERROR <error number> <error message>
Il error number
può essere qualsiasi valore maggiore di 13000; nessuna voce corrispondente deve esistere nella tabella sys.messages
. error message
può anche essere arbitrario.
Il seguente codice di esempio
raiserror 13000 'test error'
produce il seguente output
Msg 13000, Level 16, State 1, Line 1
test error
Questo comportamento è lo stesso in SQL 2000, 2005 e 2008 (non ho ancora testato 2008 R2).
Stiamo tentando di standardizzare su un metodo supportato, ma la mia domanda è da dove viene questo comportamento, in primo luogo.
Presumo che questo deve essere documentato, comportamento supportato, ma copie di libri online per SQL 7 e precedenti sono difficili da trovare. Qualcuno sa quando è stato supportato o quando è stato deprecato, se mai?
Modifica Per chiarire, secondo il documentation, la sostenuta RAISERROR
sintassi è
RAISERROR ({ msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ])
[ WITH option [ ,...n ] ]
e un numero qualsiasi errore dell'utente che non è definito in sys.messages
dovrebbe essere sollevata con un ID messaggio di errore di 50000
Concordato - ma la sintassi non è documentata e, secondo i documenti, qualsiasi errore utente non definito in 'sys.messages' deve essere generato con un codice di errore di 50000 –