2010-06-01 6 views
10

Estoy utilizando SQL Server 2008 Enterprise. Me encontré con un problema que dice que la línea 9 del procedimiento almacenado foo se está reuniendo con el problema de bloqueo muerto. Mi pregunta es cómo encontrar exactamente la novena línea del procedimiento almacenado.Problema de número de línea de procedimiento almacenado de SQL Server

Mi confusión se debe a la cuestión de formato de codificación, cómo localizar la 9ma línea correctamente.

gracias de antemano, George

+1

Marc, ¿tiene alguna experiencia para compartir sobre cómo encontrar el número de línea con más precisión? – George2

Respuesta

5

Es la novena línea de la sentencia CREATE PROCEDURE. Una instrucción SQL a menudo es multilínea, por lo que la "línea 9" se referirá a la primera línea de la instrucción (por ejemplo, INSERTAR o ACTUALIZAR)

Sin embargo, si tiene comentarios sobre CREAR PROCEDIMIENTO o líneas en blanco antes, entonces no puede confíe en esto ... entonces ejecute ALTER PROC con ALTER PROC como primera línea en el lote.

+0

1. Entonces, ¿la forma más confiable es utilizar alter proc desde SQL Server Management Studio, luego contar el número de línea? 2. ¿Debo eliminar los comentarios sobre el procedimiento de la tienda de alterar el código de proc generado por SQL Server Management Studio? – George2

+0

Mi confusión se trata de si las líneas anteriores procedimiento alter serán contados como recuento de número de línea - "SET ANSI_NULLS EN IR QUOTED SET EN GO", y también cómo tratar comunicado con varias líneas de proceso de almacenamiento para hacer frente a la línea número de cuenta? – George2

+1

Es la línea XX del CREATE PROC – gbn

12

Un consejo que aprendí de another answer ...

Si lo hace

sp_helptext (proc name) 

SQL dará salida a su 'recordado' versión de la sentencia de creación procedimiento, y eso es lo que se obtiene el número de líneas de aparentemente. Si tiene SSMS en modo 'salida de red', también dará como salida los números de línea (como los números de fila del conjunto de resultados).

NB: en mi caso, estaba trabajando desde la instrucción CREATE PROCEDURE más un montón de comentarios sobre ella, por lo que la línea 1 estaba a unas 6 líneas por encima de la llamada CREATE PROCEDURE.

+0

+1 para 'sp_helptext'. ¡Gracias! – LeopardSkinPillBoxHat

+2

Al igual que un FYI en mi caso, era 'sp_helptext proc_name' sin paréntesis. Los parens pueden haber estado en el ejemplo para algún otro propósito, pero no funcionó para mí hasta que los saqué. +1 sin embargo! – Shrout1

4

Los números de línea emitidos por sp_helptext son totalmente diferentes que el número de línea que aparece en el mensaje de error.

Por ejemplo, en mi error de procedimiento almacenado, dijo que el error se produjo en la línea número 194, pero en realidad mi procedimiento almacenado mostró solo 136 líneas cuando mostré sp_helptext. Por cierto, utilicé SQL Server 2008.

+1

Creo que lo mejor es volver a ejecutar su SP utilizando el script alter y asegúrese de que el procedimiento alter sea la primera línea y no haya comentarios, etc. arriba. entonces los números de línea de error presentados deberían coincidir. – Christo

Cuestiones relacionadas