OK, questo è completamente non documentato, e ho dovuto capirlo per tentativi ed errori, ma imposta il numero di riga per la segnalazione degli errori. Per esempio:
LINENO 25
SELECT * FROM NON_EXISTENT_TABLE
È possibile che questo vi darà un messaggio di errore, che indica un errore alla linea 27 (invece di 3, se si converte la linea LINENO a un commento singola linea (ad esempio, dal prefisso con due trattini)):
Msg 208, Level 16, State 1, Line 27
Invalid object name 'NON_EXISTENT_TABLE'.
Questo è legato a meccanismi simili in linguaggi di programmazione, come ad esempio le direttive di lino preprocessore in Visual C++ e Visual C# (che sono documentate, tra l'altro).
Com'è possibile, si può chiedere? Bene, un uso di questo per aiutare i generatori di codice SQL che generano codice da un linguaggio di livello superiore (rispetto a SQL) e/o eseguire l'espansione macro, legano le code line generate alle code line dell'utente.
P.S., Non è una buona idea affidarsi a funzionalità non documentate, specialmente quando si ha a che fare con un database.
Aggiornamento: questa spiegazione è ancora corretta fino alla versione corrente di SQL Server, che al momento della stesura di questo documento è SQL Server 2008 R2 Aggiornamento cumulativo 5 (10.50.1753.0).
fonte
2010-10-29 18:01:48
Questo è fantastico - vorrei darti 2 più upvotes per una "bella risposta" se potessi. A ** vorrei ** far notare che non funziona in Query Analyzer stesso, ma funziona esattamente come descritto in una stored procedure. Dobbiamo utilizzare questa funzione solo per il bene e non per l'avvitamento con gli amministratori di database ... – LittleBobbyTables
Non avvitiamoci con i DBA :-) Il messaggio 208, livello 16, stato 1, riga 2792874 –
funziona ancora in SQL 2012 :-) – Bridge