टी-एसक्यूएल में डिबग समय में टेबल चर के मूल्यों को कैसे देखें?


187

क्या हम डिबग समय के दौरान SQL सर्वर प्रबंधन स्टूडियो (SSMS) में एक टेबल वैल्यूएबल वैरिएबल में मान (पंक्तियाँ और सेल) देख सकते हैं? यदि हाँ, तो कैसे?

यहां छवि विवरण दर्ज करें

जवाबों:


31

यह Microsoft कनेक्ट लिंक: Microsoft Connect के अनुसार अभी तक लागू नहीं हुआ है



2
और यहां हम 2016 में हैं। कोई बेहतर नहीं। कनेक्ट लिंक भी अब काम नहीं करता है।
डॉटनेट २ Apr'१६ को ३.५०

5
सच कहूं तो यह वास्तव में एक उत्तर नहीं है क्योंकि यह सवाल का जवाब नहीं देता है, सवाल यह है कि यह कैसे करना है (एसएसएमएस में इसके लिए कोई विशेषता नहीं है), यह बताते हुए कि इसे लागू नहीं किया गया है जबकि मान प्रदर्शित करने के तरीके नहीं हैं बहुत मददगार।
रेज़वान फ़्लेवियस पांडा

1
कृपया इस उत्तर को हटा दें। नीचे दिया गया उत्तर स्वीकृत उत्तर होना चाहिए।
भंवर852456

2018, अभी भी नहीं।
AgentFire

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

उपरोक्त कथन उस बिंदु पर डालें जहाँ आप तालिका की सामग्री देखना चाहते हैं। तालिका की सामग्री को स्थानीय विंडो में XML के रूप में प्रस्तुत किया जाएगा, या आप @vघड़ियों की खिड़की में जोड़ सकते हैं।

यहां छवि विवरण दर्ज करें


1
यह निश्चित रूप से एक ऐसा काम है जो XML के रूप में प्रस्तुत की जाने वाली छोटी तालिकाओं के लिए पर्याप्त है।
फ़ैज़

4
लेकिन फिर भी पढ़ना बंद मत करो! नीचे एक और भयानक विकल्प! महान धागा !!
माइक एम

1
मेरे पास एक्सएमएल के साथ बड़ी तालिकाओं हैं जो पढ़ने के लिए बहुत अनुकूल नहीं हैं। मैं एक और कदम उठाता हूं - एक्सएमएल कॉपी करें और xmlgrid.net में पेस्ट करें और आप एक्सएमएल को टेबल के रूप में देख सकते हैं। टेबल विज़ुअलाइज़ेशन वास्तव में मदद करता है। SSMS की रिलीज़ की प्रतीक्षा कर रहा है, जिसमें विजुअल स्टूडियो में डेटाटेबल दर्शक की तरह एक टेबल दर्शक है।
मोइज़ टंकीवाला

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

2
SQL Server 2016 का उपयोग करना या कभी भी आप इसके JSON संस्करण का उपयोग नहीं कर सकते हैं DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
Sousuke

18

इस परियोजना https://github.com/FilipDeVos/sp_select में एक संग्रहीत कार्यविधि हैsp_select जो एक अस्थायी तालिका से चयन करने की अनुमति देती है।

उपयोग:

exec sp_select 'tempDb..#myTempTable'

संग्रहीत कार्यविधि को डीबग करते समय आप एक नया टैब खोल सकते हैं और इस कमांड को टेम्‍प टेबल की सामग्री को देखने के लिए चला सकते हैं।


6
अस्थायी तालिकाओं के लिए महान, लेकिन टेबल चर के लिए नहीं
हरग

ओपन ट्रांजेक्शन होने पर भी हैंग हो जाता है, इसलिए अगर tSQLt जैसे फ्रेम में टेस्ट डिबगिंग का उपयोग करते हैं तो बहुत ज्यादा उपयोग न करें जो कि टेस्ट की शुरुआत में हमेशा एक ट्रांजेक्शन खोलता है।
नाथन

1
वाह वाह वाह कैसे
वोटशैल

अच्छा है - बहुत अच्छा होगा यदि आप एक एकल कॉलम या दो के
आधार पर छाँट सकें

6

संग्रहीत प्रक्रिया में एक वैश्विक अस्थायी तालिका ## प्रलोभन पैदा करते हैं और अपने संग्रहीत कार्यविधि के भीतर एक सम्मिलित क्वेरी लिखते हैं जो आपकी तालिका में डेटा को इस अस्थायी तालिका में सम्मिलित करता है।

एक बार यह हो जाने के बाद आप एक नई क्वेरी विंडो खोलकर अस्थायी तालिका की सामग्री की जांच कर सकते हैं। बस "# का चयन करें" ## प्रलोभन से "


1

टेबल वैरिएबल को प्रदर्शित करने के लिए बस चयन क्वेरी का उपयोग करें, जहां आप कभी भी जांचना चाहते हैं।

http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/


हां सबसे अच्छा और तेज विकल्प पर सहमत हुआ। बस इसे और हाइलाइट करें और केवल उसी SQL को निष्पादित करें जिसे आप चलाना चाहते हैं यदि आपको अधिक नियंत्रण की आवश्यकता है।
जैमिन डे

2
घड़ी विंडो में, चुनिंदा क्वेरी का उपयोग कहां करें?
फ़ैज़

प्रक्रिया या किसी भी तदर्थ प्रश्न के चयन का उपयोग करें जिसे आप निष्पादित कर रहे हैं
solairaja

लेकिन मुझे जो परीक्षण करने की आवश्यकता है वह एक टेबल वैल्यू फ़ंक्शन है और यह "एक क्लाइंट के लिए डेटा वापस नहीं कर सकता है" में शामिल बयानों को चुनता है। क्या कोई अन्य तरीका है, विशेष रूप से डिबगिंग टूल के माध्यम से जांच करने के लिए?
फैज

3
नहीं, जो सवाल हल नहीं करता है। मुझे लगता है कि यह बिना किसी अतिरिक्त प्लगइन्स के संभव नहीं है।
फ़ैज़

1

यदि आप SQL सर्वर 2016 या नए का उपयोग कर रहे हैं, तो आप इसे JSON परिणाम के रूप में भी चुन सकते हैं और इसे JSON Visualizer में प्रदर्शित कर सकते हैं, इसे XML की तुलना में पढ़ना बहुत आसान है और आपको परिणामों को फ़िल्टर करने की अनुमति देता है।

DECLARE @v nvarchar(max) = (SELECT * FROM Suppliers FOR JSON AUTO)

यहां छवि विवरण दर्ज करें


0

मैं इस निष्कर्ष पर पहुंचा हूं कि यह किसी भी प्लगइन्स के बिना संभव नहीं है।


मैंने 2010 के विजुअल स्टूडियो के कुछ पूर्वावलोकन देखे। बहुत ही फैंसी, जटिल और विस्तृत ... और प्रदर्शनकारी को पता नहीं था कि क्या टेम्प टेबल को डिबग मोड में देखा जा सकता है। शायद जब यह रिलीज़ हो जाए, लेकिन मैं अपनी सांस नहीं रोक रहा।
फिलिप केली

0

SQL सर्वर Profiler 2014 तालिका मान पैरामीटर की सामग्री को सूचीबद्ध करता है। पिछले संस्करणों में भी काम कर सकते हैं। SP सक्षम करें: प्रारंभ या RPC: संग्रहीत कार्यविधि समूह और TextData स्तंभ में पूर्ण घटना और जब आप प्रवेश में प्रवेश पर क्लिक करते हैं तो आपके पास तालिका चर के लिए सम्मिलित विवरण होंगे। फिर आप पाठ को कॉपी कर सकते हैं और प्रबंधन स्टूडियो में चला सकते हैं।

नमूना उत्पादन:

declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')

exec uspWhatever @PARAM=@p1

-1

क्यों न केवल तालिका का चयन करें और चर को देखें?

SELECT * FROM @d

4
कृपया बताएं कि इसके बारे में कैसे जाना जाए। SELECT * FROM @Tableडिबग की जा रही स्क्रिप्ट में जोड़ना परिणाम विंडो में परिणाम नहीं देता है।
स्टिंगजैक

-3

क्षमा करें दोस्तों, मुझे पार्टी में थोड़ी देर हो गई है, लेकिन किसी के लिए भी जो इस प्रश्न पर बाद की तारीख में ठोकर खाता है, मैंने इसे एक संग्रहीत प्रक्रिया में करने का सबसे आसान तरीका पाया है:

  1. शीर्ष पर घोषित और आरंभिक किसी भी प्रक्रिया पैरामीटर के साथ एक नई क्वेरी बनाएँ।
  2. अपनी प्रक्रिया के शरीर में चिपकाएँ।
  3. अपने टेबल चर को डेटा के साथ आरंभीकृत करने के तुरंत बाद एक अच्छे पुराने जमाने की चयन क्वेरी को जोड़ें।
  4. यदि 3. प्रक्रिया में अंतिम विवरण नहीं है, तो एक ही लाइन पर एक ब्रेकपॉइंट सेट करें, डिबगिंग शुरू करें और सीधे अपने ब्रेकपॉइंट पर जारी रखें।
  5. फायदा!!

messi19 का जवाब स्वीकार किया जाना चाहिए एक IMHO, क्योंकि यह मेरी तुलना में सरल है और ज्यादातर समय काम करता है , लेकिन अगर आप मेरे जैसे हैं और एक लूप के अंदर एक टेबल चर है जिसे आप निरीक्षण करना चाहते हैं, तो यह अच्छी तरह से काम करता है बहुत अधिक प्रयास या बाहरी SSMS प्लगइन्स के बिना।


यह पूरी तरह से विपरीत है कि ओपी क्या करने की कोशिश कर रहा है।
जेमी मार्शल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.