SSMS में ntext या nvarchar (मैक्सिमम) से सभी टेक्स्ट कैसे देखें?


192

SQL सर्वर प्रबंधन स्टूडियो में NT पाठ या NVARCHAR (अधिकतम) से सभी पाठ कैसे देखें? डिफ़ॉल्ट रूप से, यह केवल पहले कुछ सौ वर्णों (255?) को वापस करने के लिए लगता है, लेकिन कभी-कभी मैं पूरे क्षेत्र को देखने का एक त्वरित तरीका चाहता हूं, इसे करने के लिए एक कार्यक्रम लिखने के लिए बिना। यहां तक ​​कि एसएसएमएस 2012 में अभी भी यह समस्या है :(


जवाबों:


91

विकल्प (क्वेरी परिणाम / एसक्यूएल सर्वर / परिणाम ग्रिड पेज पर)

वर्तमान प्रश्नों के विकल्पों को बदलने के लिए, क्वेरी मेनू पर क्वेरी विकल्प पर क्लिक करें या SQL सर्वर क्वेरी विंडो में राइट-क्लिक करें और क्वेरी विकल्प चुनें।

...


प्रत्येक वर्ण में प्रदर्शित किए जाने वाले वर्णों की अधिकतम संख्या निर्दिष्ट करने के लिए अधिकतम वर्ण 65535 के माध्यम से 1 से एक संख्या दर्ज करें।

अधिकतम, जैसा कि आप देखते हैं, 64k। डिफ़ॉल्ट बहुत छोटा है।

पाठ के लिए BTW परिणाम और भी अधिक कठोर सीमा है:

प्रत्येक कॉलम में प्रदर्शित वर्णों की अधिकतम संख्या।
यह मान 256 तक डिफॉल्ट करता है। ट्रंकेशन के बिना बड़े परिणाम सेट प्रदर्शित करने के लिए इस मान को बढ़ाएं। अधिकतम मूल्य 8,192 है।


1
जैसा कि रेमस ने अपने जवाब में लिखा है, सीमाएं हैं, क्योंकि MAX के साथ परिभाषित कॉलम में डेटा प्रकार के लिए अधिकतम संग्रहण आकार 2 जीबी है, इसलिए कुछ सीमा होनी चाहिए क्योंकि एसएसएमएस में उस डेटा को प्रदर्शित करना बोझिल होगा।
इवान जी

13
@ इवानग - वास्तव में नहीं। यह ठीक उसी तरह हाइपरलिंक हो सकता है जैसे XML है और इस पर क्लिक करने से यह एक नई विंडो में खुल जाएगा। सामान्य रूप से मेरे आस-पास का काम इसे XML के लिए यहाँ के रूप में डालना है । XML डेटा को असीमित लंबाई की अनुमति देने के लिए सेट किया जा सकता है।
मार्टिन स्मिथ

@MartinSmith दिलचस्प है, इसलिए SSMS को इतनी बड़ी मात्रा में प्रदर्शित करना संभव है ...
Ivan G

11
केवल तभी काम करता है यदि वर्णों की संख्या <65535, जो कि अधिकतम अधिकतम लंबाई से कम है।
पॉलीफुन

1
@IvanG भी 'फाइल का परिणाम' इस सीमा से ग्रस्त है।
इयान

216

मैं एक NVARCHAR (MAX) कॉलम से पूर्ण पाठ (99,208 वर्ण) प्राप्त करने में सक्षम था (केवल ग्रिड पर परिणाम) और फिर उस पर राइट-क्लिक करके और फिर CSV फ़ाइल के रूप में परिणाम सहेजकर। परिणाम देखने के लिए एक पाठ संपादक (एक्सेल नहीं) के साथ सीएसवी फ़ाइल खोलें। काफी मजेदार, जब मैंने एक ही क्वेरी चलाने की कोशिश की, लेकिन परिणाम को फ़ाइल सक्षम करने के लिए, परिणाम को पाठ सीमा तक परिणाम का उपयोग करके छोटा कर दिया गया।

उस कार्य के आस-पास जो @MartinSmith ने एक टिप्पणी के रूप में वर्णित किया है (वर्तमान में) स्वीकृत उत्तर ने मेरे लिए काम नहीं किया (एक त्रुटि मिली जब "XML" वर्ण, हेक्साडेसिमल मान 0115B के बारे में शिकायत करते हुए पूर्ण XML परिणाम देखने की कोशिश की जा सकती है, नहीं) एक नाम में शामिल होना ")।


17
CSV के लिए, राइट-क्लिक, सेव के रूप में, मेरे लिए एक NT पाठ क्षेत्र से एक विशाल टेक्स्ट मान प्राप्त करने के लिए एक आकर्षण की तरह काम किया।
डेविड एपरट

3
@ajeh: आप SSMS 2012 के किस संस्करण का उपयोग कर रहे हैं? मैंने इसे अपने SSMS 2012 (संस्करण 11.0.5343.0) के साथ परीक्षण किया (मेरे उत्तर में वर्णित समान चरणों का पालन) और यह काम करता है
एरिक

8
लेकिन इसे एक्सेल में न खोलें, CSV आयात डेटा को फिर से काट देगा। :)
जॉन्केल

1
धन्यवाद, इसने मुझे SSMS 2012 का उपयोग करते हुए एक varchar (अधिकतम) क्षेत्र से 7MB पाठ डेटा निर्यात करने की अनुमति दी।
ब्रायन हैडन

2
टैब सीमांकित पाठ के रूप में सहेजना बेहतर काम करता है। सीएसवी प्रारूप पाठ के सभी उद्धरणों को दोगुना करता है।
davidthegrey

139

त्वरित ट्रिक-

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629

6
यह पूरी तरह से काम करता है (
सीडीएटीए

2
यह मेरे लिए भी काम करता है, मेरे पास json डेटा था जिसे मुझे ms sql से बाहर निकलने की आवश्यकता थी।
Dev_Corps

1
इसके अलावा, सामग्री XML से बच गए हैं। एक बार जब आप पाठ को बाहर निकाल लेते हैं, तो आपको freeformatter.com जैसे उपकरण का उपयोग करके इसे अनस्क्रिप्ट कर देना चाहिए।
हरसिमरनब

इसने मेरे लिए काम किया: `` `डिलेयर @ जी भूगोल; ... कास्ट (@ g.ToString () xml के रूप में) का चयन करें; `` `
सर्गेई ज़िनोयेव

1
यह मेरे लिए SSMS v18 के साथ काम करने के लिए 250kb जोंस स्ट्रिंग को देखने के लिए काम करता है जिसे अन्य समाधानों द्वारा काट दिया गया था। इसके अलावा मुझे यह पसंद है क्योंकि यह आपको टेक्स्ट व्यूअर का लिंक देता है। +!
रॉबर्टो

54

मैंने SSMS के लिए एक ऐड-इन लिखा है और यह समस्या वहाँ ठीक हो गई है। आप 2 तरीकों में से एक का उपयोग कर सकते हैं:

आप मूल सेल डेटा को क्लिपबोर्ड पर कॉपी करने के लिए "कॉपी करेंट सेल 1: 1" का उपयोग कर सकते हैं:

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaksमूल सेल सामग्री की प्रतिलिपि बनाएँ

या, वैकल्पिक रूप से, आप "सेल विज़ुअलाइज़र" सुविधा का उपयोग करके बाहरी पाठ संपादक (नोटपैड ++ या नोटपैड) में सेल सामग्री खोल सकते हैं: http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers

(सुविधा किसी भी बाहरी अनुप्रयोग में फ़ील्ड की सामग्री को खोलने की अनुमति देती है, इसलिए यदि आप जानते हैं कि यह पाठ है - आप इसे खोलने के लिए पाठ संपादक का उपयोग करते हैं। यदि सामग्री तस्वीर के साथ द्विआधारी डेटा है - तो आप चित्र के रूप में दृश्य का चयन करते हैं। नीचे दिया गया नमूना तस्वीर खोलने से पता चलता है। ):एसएसएमएस परिणाम ग्रिड विज़ुअलाइज़र


2
वास्तव में उपयोगी एक्सटेंशन की तरह दिखता है, लेकिन मैं इसे एक उत्तर के रूप में स्वीकार नहीं कर सकता क्योंकि इसके लिए एक वाणिज्यिक उत्पाद (या परीक्षण) की आवश्यकता होती है। हालांकि धन्यवाद!
निकग

4
+1 अच्छा मुफ्त एक्सटेंशन जो पूरी तरह से काम करता है ... धन्यवाद!
पुनर्जन्म

2
धन्यवाद, यह वही करता है जो मैं चाहता हूं।
डेरेक डीन

9
दुर्भाग्य से, सितंबर 4, 2017 के रूप में, SSMS बूस्ट अब मुक्त नहीं है (जारी किए गए प्रत्येक नए संस्करण के लिए 30 दिनों के परीक्षण को छोड़कर)
csrowell

4
यह अब एक वाणिज्यिक उत्पाद है, मुफ्त लाइसेंस में उल्लिखित सुविधाओं में से कोई भी शामिल नहीं है, वे अक्षम हैं और आपको प्रो संस्करण खरीदने के लिए एक पॉप-अप मिलता है। जवाब सिर्फ अपने सॉफ्टवेयर के लिए एक प्रचार है।
मेटाबड्डी met ’

3

XML के रूप में डेटा लौटाएं

SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'

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

यह तब काम करेगा जब आप जिस पाठ को वापस ला रहे हैं उसमें अनएकेडेड अक्षर नहीं हैं जैसे कि &इसके बजाय &amp;XML रूपांतरण विफल हो जाएगा।

PowerShell का उपयोग करके डेटा लौटा रहा है

इसके लिए आपको मशीन पर स्थापित PowerShell SQL सर्वर मॉड्यूल की आवश्यकता होगी, जिस पर आप कमांड चला रहे होंगे।

यदि आप सभी सेट अप हैं, तो निम्न स्क्रिप्ट को कॉन्फ़िगर और चलाएं:

Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"

सुनिश्चित करें कि आपने -MaxCharLengthपैरामीटर को अपनी आवश्यकताओं के अनुरूप मान सेट किया है।


1

वैकल्पिक 1 : पाठ संपादक में सेल और पेस्ट कॉपी करने के लिए राइट क्लिक करें (उम्मीद से utf-8 समर्थन के साथ)

वैकल्पिक 2 : CSV फ़ाइल पर राइट क्लिक और निर्यात करें

वैकल्पिक 3 : कॉलम के कुछ हिस्सों की कल्पना करने के लिए SUBSTRING फ़ंक्शन का उपयोग करें। उदाहरण:

SUBSTRING (fileXml, 2200,200) का चयन करें, जहाँ से mytable 123 = 123 है


0

यदि आपको केवल इसे देखना है, तो मैंने इसका उपयोग किया है:

print cast(dbo.f_functiondeliveringbigformattedtext(seed) as text)

अंतिम परिणाम यह है कि मुझे एसएमएसएस के संदेश विंडो में लाइन फीड और सभी सामग्री मिलती है। बेशक, यह केवल एक ही सेल के लिए अनुमति देता है - यदि आप कई पंक्तियों में से एकल सेल करना चाहते हैं, तो आप ऐसा कर सकते हैं:

declare @T varchar(max)=''
select @T=@T
       + isnull(dbo.f_functiondeliveringbigformattedtext(x.a),'NOTHINGFOUND!')
       + replicate(char(13),4)
from x -- table containing multiple rows and a value in column a
print @T

मैं SQL कोड द्वारा उत्पन्न JSON स्ट्रिंग्स को मान्य करने के लिए इसका उपयोग करता हूं। बहुत मुश्किल से पढ़ा अन्यथा!


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