2013-07-12 3 views
12

मैं SSMS का उपयोग कर एक जटिल टी SQL स्क्रिप्ट डिबग करने के लिए चाहते हैं 2012एमएस एसक्यूएल प्रबंधन स्टूडियो 2012 में डिबगिंग सत्र के दौरान तालिका चर में डेटा कैसे देखें?

मैं डिबग मोड और जगह breakpoints में स्क्रिप्ट चला सकते हैं, साथ ही मेरी स्क्रिप्ट के माध्यम से कदम है, लेकिन मैं संग्रहीत मान नहीं देख सकते हैं मेरी टेबल चर में।

Locals खिड़की मैं इन सभी चर को देखने में, लेकिन उनके मूल्य दिखाया गया है (table) के रूप में:

Locals window

वहाँ संदर्भ मेनू के माध्यम से या पर क्लिक करके चर की सामग्री को देखने के लिए कोई रास्ता नहीं है परिवर्तनीय

मैंने तालिका चर पर एक क्वेरी चलाने के लिए Immediate Window का उपयोग करने का प्रयास किया, लेकिन ऐसा लगता है कि यह भी काम नहीं करता है।

Immediate Window

किसी भी विचार कैसे मैं डिबग सत्र में मेरी मेज चर से मूल्यों को मिल सकता है?

+0

की संभावित डुप्लिकेट [T-SQL में डिबग समय में एक तालिका चर के मान को देखने के लिए कैसे?] (Http://stackoverflow.com/questions/1900857/how-to-see -the-value-a-table-variable-at-debug-time-in-t-sql) – Faiz

उत्तर

12

जबकि मुझे कोई भी ड्यूमेटेशन नहीं मिल रहा है, जो स्पष्ट रूप से कहता है कि आप तालिका चर का निरीक्षण नहीं कर सकते हैं, मुझे विश्वास नहीं है कि यह संभव है। Transact-SQL Debugger से

स्थानीय लोगों और घड़ी। ये विंडोज़ वर्तमान में आवंटित ट्रांजैक्ट-एसक्यूएल एक्सप्रेशन प्रदर्शित करते हैं। अभिव्यक्तियां ट्रांजैक्ट-एसक्यूएल क्लॉज हैं जो एक एकल, स्केलर अभिव्यक्ति का मूल्यांकन करती हैं। ट्रांजैक्ट-एसक्यूएल डीबगर देखने वाले अभिव्यक्तियों का समर्थन करता है जो ट्रांजैक्ट-एसक्यूएल चर, पैरामीटर, या बिल्ट-इन फ़ंक्शंस को संदर्भित करते हैं जिनके नाम @@ से शुरू होते हैं। ये विंडो उन डेटा मानों को भी प्रदर्शित करती हैं जो वर्तमान में अभिव्यक्तियों को सौंपा गया है।

(मेरे जोर)

है कि आप केवल एक scalars निरीक्षण कर सकते हैं।

तत्काल विंडो का उपयोग करने के लिए अपने प्रयास के रूप में, Limitations on Debugger Command and Features का कहना है:

तत्काल विंडो प्रदर्शित होती है, लेकिन आप इस तरह के एक मूल्य के लिए एक चर सेटिंग के रूप में इसके साथ उपयोगी कुछ भी, ऐसा नहीं कर सकते, या डेटाबेस से पूछताछ।


मैं वास्तव में कभी नहीं बहुत डिबगर का उपयोग किया है - हर मैं इसे देखा है, मैं इस तरह सीमाओं का सामना।

है यही कारण है कि मैं अभी भी प्रयोग करते हैं "पुराने skool"/"printf" डिबग एसक्यूएल करने के लिए दृष्टिकोण - टेबल की वर्तमान स्थिति दिखा कोड भर में शामिल अतिरिक्त SELECT * रों उदारतापूर्वक, और अतिरिक्त PRINT या RAISERROR संदेश जो अन्य राज्यों को दिखाने , आदि। और तब तक सामान्य रूप से कोड चलाएं, जब तक कि आप इसे आकार में नहीं डाल देते।

+0

आपके शोध के लिए धन्यवाद, मेरा कोई भी परिणाम नहीं मिला है। मैं सिर्फ यह विश्वास नहीं करना चाहता था कि यह संभव नहीं है, क्योंकि यह मेरी आंखों में पूरी तरह से अनुपयोगी डीबगर प्रदान करता है। "पुरानी-स्कूल" -डेबगिंग के साथ समस्या यह है कि हमने कोड को "डीबग" किया है जिसमें कोई डीबग/टिप्पणी नहीं किया गया है/पहुंचने योग्य बयान (जैसा कि हमारी कोडिंग नीति द्वारा आवश्यक है) और मुझे उन्हें फिर से लाने की आवश्यकता है ... –

9

अगले कोड का उपयोग करके आप अपनी तालिका की सामग्री एक्सएमएल के रूप में देख सकते हैं।

DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO) 

यह जांचना उपयोगी है कि आपके चयन विवरण क्या लौटते हैं। मैंने इसका परीक्षण किया और यह काम करता है।

और पढ़ें here

+1

ये काम नहीं कर रहा है। मैं स्थानीय विंडो में @v को देखने में सक्षम नहीं हूं। – Naren

+1

@ नरेन मैंने इसे सत्यापित कर लिया है। यह स्थानीय विंडो में काम करता है और मैं @v चर में पॉप्युलेट मान देख सकता हूं। मैं SQL सर्वर 2008 R2 के लिए SQL सर्वर प्रबंधन स्टूडियो का उपयोग कर रहा हूँ। – RBT

+0

आप "एक्सएमएल" खंड में "रूट ('rootNodeName')" जोड़ सकते हैं। यह एक ही रूट के तहत कई पंक्तियां (यदि कोई हो) एकत्र करेगा, जो एक कानूनी XML दस्तावेज़ बनाता है, जिसे टेक्स्ट विज़ुअलाइज़र के बजाय एक्सएमएल विज़ुअलाइज़र के साथ देखा जा सकता है। – JohnL4

1

मैं बस मेरी स्क्रिप्ट में चयन बयान में डाल दिया और यह परिणाम विंडो को यह प्रदर्शित करता है ..

चयन * @VarTable से;

अब जब मैं अपने कोड के माध्यम से कदम उठाता हूं और चयन को हिट करता हूं तो यह मान प्रदर्शित करेगा। फिर परीक्षण करते समय या परीक्षण परीक्षण ध्वज सेट करते समय मैं उन्हें बाहर टिप्पणी करता हूं।

आशा इस मदद करता है

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