2009-08-24 11 views
124

मैं का उपयोग कर एसक्यूएल सर्वर में एक स्तंभ का आकार बदलने के लिए कोशिश कर रहा हूँ:एक स्तंभ एक स्कीमा बाध्य दृश्य द्वारा संदर्भित एसक्यूएल सर्वर में का आकार बदलने

ALTER TABLE [dbo].[Address] 
ALTER COLUMN [Addr1] [nvarchar](80) NULL 

जहां Addr1 की लंबाई मूल रूप 40 था ।

यह विफल रहा है, इस त्रुटि को ऊपर उठाने:

The object 'Address_e' is dependent on column 'Addr1'. 
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access 
this column. 

मैं इस पर पढ़ने की कोशिश की है और यह है कि क्योंकि कुछ दृश्यों इस स्तंभ संदर्भित कर रहे हैं और ऐसा लगता है कि एसक्यूएल सर्वर वास्तव में ड्रॉप करने की कोशिश कर रहा है लगता है कॉलम जो त्रुटि उठाया।

Address_e पिछले डीबी प्रशासक द्वारा बनाई गई एक दृश्य है।

क्या कोई अन्य तरीका है जिससे मैं कॉलम के आकार को बदल सकता हूं?

+1

"पता_e" क्या है? – devio

+2

पता_e पिछले डीबी प्रशासक द्वारा बनाई गई एक दृश्य है। और रीमस का उल्लेख किस तरह किया गया है, इसमें योजनाबद्ध परिभाषित किया गया है। – Staelen

उत्तर

57

विचार शायद SCHEMABINDING विकल्प का उपयोग करके बनाए गए हैं और इसका मतलब है कि वे ऐसे परिवर्तनों को रोकने के लिए स्पष्ट रूप से वायर्ड हैं। ऐसा लगता है कि स्कीमाइंडिंग ने काम किया और आपको उन विचारों को तोड़ने से रोक दिया, भाग्यशाली दिन, हे? डेटाबेस पर प्रभाव डालने के बाद, अपने डेटाबेस व्यवस्थापक से संपर्क करें और उसे परिवर्तन करने के लिए कहें।

MSDN से:

SCHEMABINDING

Binds the view to the schema of the underlying table or tables. When SCHEMABINDING is specified, the base table or tables cannot be modified in a way that would affect the view definition. The view definition itself must first be modified or dropped to remove dependencies on the table that is to be modified.

+1

मैं हमेशा schemabinding का उपयोग करता हूं ... – gbn

+1

धन्यवाद रीमस, दृश्य में SCHEMABINDING परिभाषित किया गया है। क्या बाधा को दूर करने का कोई आसान तरीका है या क्या मुझे इसे काम करने के लिए वास्तव में विचारों को हटाने की ज़रूरत है? – Staelen

+1

आप इसे बाईपास नहीं कर सकते, यह उसका पूरा उद्देश्य है। किसी तालिका परिवर्तन को रोकने के लिए schemabindig जोड़ने के लिए कोई अतिरिक्त लंबाई में चला गया। यह कुछ दुर्घटना नहीं है, ऐसा लगता है कि व्यक्ति जानता है कि क्या कर रहा था। क्या आप निश्चित हैं * आप टेबल को बदलना चाहते हैं? –

5

इस लिंक

Resize or Modify a MS SQL Server Table Column with Default Constraint using T-SQL Commands

देखें

इस तरह के एक एसक्यूएल सर्वर समस्या के लिए समाधान

गिराने होने जा रहा है या पर डिफ़ॉल्ट बाधा अक्षम करने है टेबल कॉलम

तालिका कॉलम डेटा प्रकार और/या डेटा आकार को संशोधित करना।

एसक्यूएल तालिका कॉलम पर डिफ़ॉल्ट बाधा को फिर से बनाना या सक्षम करना।

अलविदा

258
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150) 
+3

बिल्कुल सही कोड ... मैं इसे जांचता हूं ..... –

+11

नहीं, समस्या रेमस का उल्लेख किया गया था। कोड के साथ कुछ भी गलत नहीं है – Staelen

+11

@ नीलराद उम्म्म, शायद आप पीएल-एसक्यूएल के बारे में सोच रहे हैं? ALTER COLUMN SQL 2008 R2 – schmidlop

2
यहाँ

क्या प्रोग्राम है जो मैं उपयोग कर रहा हूँ के संस्करण के साथ काम करता है: आप के लिए भी काम कर सकते हैं।

मैं केवल निर्देश और आदेश देता हूं जो करता है। कक्षा तालिका का नाम है। आप इसे इस विधि के साथ तालिका में स्वयं बदलते हैं। न केवल खोज प्रक्रिया पर वापसी।


तालिका वर्ग

select * from class 

कॉलम बदलें FacID की लंबाई और classnumber ("के रूप में classnu" देखा) पूरे लेबल फिट करने के लिए (के रूप में "faci" देखा) में देखते हैं।

alter table class modify facid varchar (5); 

alter table class modify classnumber varchar(11); 

दृश्य तालिका फिर से अंतर

select * from class; 

देखने के लिए


यह अच्छे के लिए वास्तविक तालिका में परिवर्तन (अंतर को देखने के लिए आदेश को पुन: चलाने), लेकिन बेहतर के लिए।

पीएस मैंने इन निर्देशों को आदेशों के लिए एक नोट के रूप में बनाया है। यह एक परीक्षण नहीं है, लेकिन एक पर मदद कर सकता है :)

6

यदि कोई भी SQL सर्वर 2008 में "प्रतिकृति तालिका की कॉलम चौड़ाई बढ़ाएं" चाहता है, तो "replicate_ddl=1" की संपत्ति को बदलने की आवश्यकता नहीं है। सीधे शब्दों में नीचे दिए गए चरणों का पालन करें -

  1. ओपन SSMS
  2. कनेक्ट प्रकाशक डेटाबेस के लिए
  3. रन कमांड - ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
  4. यह varchar(22) को varchar(x) से स्तंभ चौड़ाई में वृद्धि होगी और एक ही परिवर्तन आप ग्राहक पर देख सकते हैं (लेनदेन दोहराया गया)। इसलिए प्रतिकृति

आशा है कि यह उन सभी की मदद करेगा जो इसकी तलाश में हैं।

0

कॉलम संयोजन की जांच करें। यह स्क्रिप्ट तालिका तालिका में संयोजन को बदल सकती है। स्क्रिप्ट में वर्तमान संयोजन जोड़ें।

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