2010-02-26 7 views
5

एसक्यूएल 2005 में शुरू, VARCHAR (MAX) अब 8000 बाइट तक सीमित नहीं है, इसके बजाय यह "ओवरफ्लो" पृष्ठों का उपयोग करके 2 जीबी तक जा सकता है।क्या मैं 8k से बड़ा लेकिन MAX से कम VARCHAR आकार सेट कर सकता हूं?

लेकिन अगर मैं इस कॉलम को 10k बाइट्स कहने के लिए सीमित करना चाहता हूं तो क्या होगा? ऐसा लगता है कि अगर मैं 8000 से ऊपर आकार पैरामीटर में कुछ भी डालने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। जो अजीब है क्योंकि MAX 2 जीबी सीमा के लिए पूछने जैसा ही है। जब मैक्स आकार की बात आती है तो यह "सभी या कुछ भी नहीं" जैसा लगता है।

इस के आसपास कोई रास्ता?

उत्तर

3

नहीं, आप यह [सीधे] नहीं कर सकते हैं। यह या तो 0-8000 या MAX है। कहते हैं कि 10000 दे देंगे का उपयोग करने के

प्रयास:

The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000). 

आप फिर भी एक जांच contraint के साथ एक VARCHAR (मैक्स) स्तंभ का उपयोग कर सकते हैं। कुछ ऐसा:

CHECK (DATALENGTH([myBigColumn]) <= 10000) 
8

नहीं, आप नहीं कर सकते। या तो वर्कर (< = 8000) या वर्कर (MAX), बीच में कुछ भी नहीं।

आप इस हालांकि कर सकते हैं:

CREATE TABLE [dbo].[VarChar10000] ([VarChar10000] VARCHAR(MAX)) 
GO 

ALTER TABLE [dbo].[VarChar10000] 
    ADD CONSTRAINT [MaxLength10000] 
    CHECK (DATALENGTH([VarChar10000]) <= 10000) 
GO 

चेक here

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