Bien, esto está completamente indocumentado, y tuve que resolverlo a través de prueba y error, pero establece el número de línea para el informe de errores. Por ejemplo:
LINENO 25
SELECT * FROM NON_EXISTENT_TABLE
Lo anterior le dará un mensaje de error, lo que indica un error en la línea 27 (en lugar de 3, si convierte la línea NUMLINEA a un comentario sola línea (por ejemplo, mediante un prefijo con dos guiones)):
Msg 208, Level 16, State 1, Line 27
Invalid object name 'NON_EXISTENT_TABLE'.
Esto se relaciona con mecanismos similares en los lenguajes de programación, tales como las directivas del preprocesador #line en Visual C++ y C# Visual (las cuales están documentadas, por cierto).
¿Cómo es útil, usted puede preguntar? Bueno, un uso de esto para ayudar a los generadores de código SQL que generan código desde un lenguaje de nivel superior (que SQL) y/o realizan expansión macro, vinculan líneas de código generadas a líneas de código de usuario.
P.S., No es una buena idea confiar en funciones no documentadas, especialmente cuando se trata de una base de datos.
Actualización: Esta explicación sigue siendo correcta hasta e incluyendo la versión actual de SQL Server, que en el momento de escribir esto es SQL Server 2008 R2 Actualización acumulativa 5 (10.50.1753.0).
Eso es fantástico. Si pudiera, te daría 2 votos positivos más para una "buena respuesta". Me gustaría ** señalar que no funciona en el Analizador de consultas, pero funciona tal como se describe en un procedimiento almacenado. Debemos usar esta característica solo para bien, y no para atornillar con DBA ... – LittleBobbyTables
No vamos a atornillar con DBA :-) Msg 208, nivel 16, estado 1, línea 2792874 –
Todavía funciona en SQL 2012 :-) – Bridge