तालिका में फेरबदल करते हुए "आकार 8074 की एक पंक्ति नहीं बना सकता है जो स्वीकार्य अधिकतम पंक्ति आकार 8060 से अधिक है"


18

मैं एक तालिका में एक कॉलम को बदलने की कोशिश कर रहा हूं। मौजूदा तालिका इस प्रकार है:

CREATE TABLE [dbo].[table](
   [id1] [int] NOT NULL,
   [id2] [int] NOT NULL,
   [id3] [int] NOT NULL,
   [name] [nvarchar](255) NOT NULL,
   [id4] [int] NOT NULL,
   [xmlData] [xml](CONTENT [dbo].[xml_schema]) NULL,
   [booleanData1] [bit] NOT NULL,
   [notes] [varchar](4096) NULL,
   [id5] [int] NULL,
   [booleanData2] [bit] NULL,
   [id6] [int] NULL,

   CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED 
   ([id1] ASC, [id2] ASC, [id3] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

अब मैं इस तालिका पर इस sql को निष्पादित करने का प्रयास कर रहा हूं:

ALTER TABLE [table] ALTER COLUMN [xmlData] XML

ताकि मैं xml स्कीमा को छोड़ सकूं और इसे नए के साथ बदल सकूं।

लेकिन मुझे यह त्रुटि मिल रही है:

8074 आकार की एक पंक्ति नहीं बना सकता है जो स्वीकार्य अधिकतम पंक्ति आकार 8060 से अधिक है।

क्या कोई मुझे बता सकता है कि यहाँ क्या समस्या है?

जवाबों:


24

यदि आपने इस तालिका पर पहले से हटाए गए या संशोधित किए गए कॉलम हैं, तो आपको इस ऑपरेशन के सफल होने से पहले स्थान को पुनः प्राप्त करने की आवश्यकता हो सकती है। SQL सर्वर हमेशा / आमतौर पर तुरंत गिरा या परिवर्तित कॉलम के लिए स्थान को पुनः प्राप्त नहीं करता है।

यदि पिछले ऑपरेशन चर-लंबाई वाले स्तंभों के सभी निष्कासन (या परिवर्तन) थे, DBCC CLEANTABLEतो पर्याप्त होना चाहिए। अन्यथा, आपको तालिका को फिर से बनाने की आवश्यकता होगी। आप इसे क्लस्टर इंडेक्स का पुनर्निर्माण करके कर सकते हैं:

ALTER INDEX PK_table
ON dbo.table
REBUILD 
WITH (ONLINE = ON); -- Enterprise only, optional
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.