2010-06-01 17 views
10

मैं SQL Server 2008 एंटरप्राइज़ का उपयोग कर रहा हूं। मैं इस मुद्दे से मुलाकात की जो कहता है कि संग्रहीत प्रक्रिया foo की लाइन 9 मृत लॉक मुद्दे से मिल रही है। मेरा सवाल यह है कि संग्रहीत प्रक्रिया की 9वीं पंक्ति को कैसे ढूंढें?SQL सर्वर संग्रहीत प्रक्रिया लाइन संख्या समस्या

मेरा भ्रम कोडिंग प्रारूप समस्या के कारण है, 9वीं रेखा को सही तरीके से कैसे ढूंढें। पहले से

धन्यवाद, जॉर्ज

+1

मार्क, क्या आपके पास लाइन नंबर को और सटीक रूप से कैसे ढूंढें इस बारे में साझा करने का कोई अनुभव है? – George2

उत्तर

5

इसे बनाने की प्रक्रिया बयान से 9 वीं लाइन है। एक एसक्यूएल कथन अक्सर मल्टीलाइन होता है, इसलिए "लाइन 9" कथन की पहली पंक्ति (जैसे INSERT या UPDATE)

हालांकि, यदि आपके पास CREATE प्रक्रिया या रिक्त रेखाओं से पहले टिप्पणियां हैं तो आप नहीं कर सकते इस पर भरोसा करें ... इसलिए बैच में पहली पंक्ति के रूप में ALTER PROC के साथ ALTER PROC चलाएं।

+0

1. तो, सबसे विश्वसनीय तरीका SQL सर्वर प्रबंधन स्टूडियो से परिवर्तित proc का उपयोग करना है, फिर लाइन नंबर गिनें? 2. क्या मैं एसक्यूएल सर्वर प्रबंधन स्टूडियो द्वारा उत्पन्न प्रो कोड को बदलने से स्टोर प्रक्रिया के ऊपर किसी भी टिप्पणी को हटा दूंगा? – George2

+0

मेरे भ्रम की स्थिति के बारे में बदलने की प्रक्रिया से ऊपर लाइनों लाइन नंबर गिनती रूप में गिना जाएगा कि क्या है - "सेट ANSI_NULLS पर पर गो गो सेट QUOTED_IDENTIFIER", और यह भी कि कैसे लाइन से निपटने के लिए दुकान प्रक्रिया में बहु लाइन बयान के इलाज के लिए संख्या गिनती? – George2

+1

यह CREATE PROC – gbn

12

एक टिप मैं another answer से सीखा ...

यदि आप करते हैं

sp_helptext (proc name) 

एसक्यूएल होगा उत्पादन अपने 'याद' प्रक्रिया बनाने के बयान के संस्करण, और वह है क्या यह है कि यह लाइन नंबर हो जाता है स्पष्ट रूप से से। यदि आपके पास 'ग्रिड आउटपुट' मोड में एसएसएमएस है तो यह लाइन संख्याओं को भी आउटपुट करेगा (परिणाम सेट की पंक्ति संख्या के रूप में)।

एनबी: मेरे मामले में यह CREATE प्रक्रिया कथन से काम कर रहा था और इसके ऊपर टिप्पणियों का एक समूह था, इसलिए लाइन 1 क्रिएट प्रोसेस कॉल के ऊपर लगभग 6 लाइनें थीं।

+0

+1 की गिनती। धन्यवाद! – LeopardSkinPillBoxHat

+2

बस मेरे मामले में एक एफवाईआई के रूप में यह 'sp_helptext proc_name' था बिना माता-पिता के। माता-पिता किसी अन्य उद्देश्य के लिए उदाहरण में हो सकते थे, लेकिन जब तक मैंने उन्हें बाहर नहीं लिया, तब तक यह मेरे लिए काम नहीं करता था। हालांकि +1! – Shrout1

4

sp_helptext द्वारा उत्पादित लाइन संख्या त्रुटि संदेश में दिखाई देने वाली रेखा संख्या से बिल्कुल अलग हैं।

उदाहरण के लिए, मेरी संग्रहीत प्रक्रिया त्रुटि में यह कहा लाइन नंबर 194 पर त्रुटि हो गई, लेकिन वास्तव में मेरी संग्रहीत प्रक्रिया केवल 136 लाइनों से पता चला जब मैं sp_helptext दिखाया। बीटीडब्ल्यू, मैंने SQL सर्वर 2008 का उपयोग किया।

+1

मुझे लगता है कि आपके एसपी को बदलने वाली स्क्रिप्ट का उपयोग करके फिर से चलाने के लिए अपना सर्वश्रेष्ठ प्रयास करें और सुनिश्चित करें कि वैकल्पिक प्रक्रिया पहली पंक्ति है और कोई टिप्पणी आदि नहीं है। तो प्रस्तुत त्रुटि लाइन संख्या मेल खाना चाहिए। – Christo

संबंधित मुद्दे