यह बस है ।
मैंने कभी भी कोई समस्या नहीं देखी है, क्योंकि मेरी जांच में से एक यह सुनिश्चित करना होगा कि मेरे पैरामीटर मेरे टेबल कॉलम की लंबाई से मेल खाते हैं। क्लाइंट कोड में भी। व्यक्तिगत रूप से, मुझे उम्मीद है कि SQL कभी भी बहुत लंबा डेटा नहीं देखेगा। अगर मुझे कटा हुआ डेटा दिखाई देता है, तो यह स्पष्ट रूप से खून बह रहा होगा कि इसका क्या कारण है।
यदि आपको वर्चर (अधिकतम) की आवश्यकता महसूस होती है तो डेटाटाइप प्राथमिकता के कारण बड़े पैमाने पर प्रदर्शन समस्या से सावधान रहें। वर्चर (अधिकतम) की वर्चर (एन) की तुलना में उच्च प्राथमिकता है (सबसे लंबा उच्चतम है)। तो इस प्रकार की क्वेरी में आपको एक स्कैन मिलेगा न कि एक खोज और प्रत्येक varchar(100) मान CAST से varchar(max)
हैUPDATE ...WHERE varchar100column = @varcharmaxvalue
संपादित करें:
इस मुद्दे के संबंध में एक खुला Microsoft Connect आइटम है।
और शायद यह Erland Sommarkog की स्ट्रिक्ट सेटिंग (और मैचिंग कनेक्ट आइटम) में शामिल किए जाने के योग्य है।
मार्टिंस की टिप्पणी के बाद 2 संपादित करें:
DECLARE @sql VARCHAR(MAX), @nsql nVARCHAR(MAX);
SELECT @sql = 'B', @nsql = 'B';
SELECT
LEN(@sql),
LEN(@nsql),
DATALENGTH(@sql),
DATALENGTH(@nsql)
;
DECLARE @t table(c varchar(8000));
INSERT INTO @t values (replicate('A', 7500));
SELECT LEN(c) from @t;
SELECT
LEN(@sql + c),
LEN(@nsql + c),
DATALENGTH(@sql + c),
DATALENGTH(@nsql + c)
FROM @t;