2010-06-01 2 views
10

Utilizzo SQL Server 2008 Enterprise. Mi sono imbattuto in un problema che indica che la riga 9 della procedura memorizzata foo incontra un problema di blocco morto. La mia domanda è come trovare esattamente la nona riga della procedura memorizzata?Numero di riga della procedura memorizzata SQL Server

La mia confusione è dovuta al problema del formato di codifica, come individuare correttamente la nona riga.

grazie in anticipo, George

+1

Marc, hai qualche esperienza da condividere su come trovare il numero di riga in modo più accurato? – George2

risposta

5

E 'il 9 ° linea dal istruzione CREATE PROCEDURE. Un'istruzione SQL è spesso multilinea quindi "riga 9" farà riferimento alla prima riga dell'istruzione (ad es. INSERISCI o AGGIORNAMENTO)

Tuttavia, se ci sono commenti sopra CREATE PROCEDURE o righe vuote prima di esso non è possibile contare su questo ... quindi eseguire ALTER PROC con ALTER PROC come prima riga nel batch.

+0

1. Quindi, il modo più affidabile è utilizzare alter proc da SQL Server Management Studio, quindi contare il numero di riga? 2. Devo rimuovere eventuali commenti sopra la procedura di archiviazione da alterare il codice proc generato da SQL Server Management Studio? – George2

+0

La mia confusione è se righe sopra procedura alter verranno contate come numero di numero di riga - "SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO", e anche come trattare dichiarazione più righe nella procedura di negozio a che fare con la linea numero conta? – George2

+1

È la riga XX dal CREATE PROC – gbn

12

Un consiglio che ho imparato da another answer ...

Se fai

sp_helptext (proc name) 

SQL sarà in uscita la sua versione 'ricordato' della dichiarazione di creare procedure, e questo è ciò che si ottiene numeri di riga da apparentemente. Se si dispone di SSMS in modalità 'uscita griglia', verrà anche emesso il numero di riga (come i numeri di riga del set di risultati).

NB: nel mio caso stava funzionando dalla dichiarazione CREATE PROCEDURE più un sacco di commenti sopra di esso, quindi la linea 1 era di circa 6 righe sopra la chiamata CREATE PROCEDURE.

+0

+1 per 'sp_helptext'. Grazie! – LeopardSkinPillBoxHat

+2

Proprio come una FYI nel mio caso era 'sp_helptext proc_name' senza paren. I paren potrebbero essere stati nell'esempio per qualche altro scopo, ma non ha funzionato fino a quando non li ho eliminati. +1 però! – Shrout1

4

I numeri di riga emessi da sp_helptext sono completamente diversi dal numero di riga visualizzato nel messaggio di errore.

Ad esempio, nel mio errore di stored procedure si è verificato l'errore sul numero di riga 194 ma in realtà la mia stored procedure ha mostrato solo 136 righe quando ho mostrato sp_helptext. A proposito, ho utilizzato SQL Server 2008.

+1

penso che il tuo meglio per rieseguire il tuo SP usando lo script alter e assicurati che alter procedure sia la prima riga e nessun commento ecc. Sopra. quindi i numeri di riga di errore presentati devono corrispondere. – Christo