2012-01-16 13 views
9

चलें कहते हैं कि मैं इस SQL ​​कथन है:कैसे ठीक से ALTER तालिका के बाद ALTER देखें चलाने के लिए

ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100) 

मैं एक फ़ाइल के अंदर इन बयानों डाल दिया है एक के बाद एक चलाने के लिए। मेरे पास एक दृश्य भी है जो डीबीओ को देख रहा है। [Tbl]। मैंने देखा कि VIEW के ऊपर 4 कथन चलाने के बाद पुरानी कॉलम लंबाई बरकरार रखती है। इसलिए मैं फ़ाइल के अंत में निम्नलिखित कोड कहा:

ALTER VIEW [dbo].[tbl] 
AS 
SELECT col1, col2, col3, col4 
FROM dbo.[tbl] 

त्रुटि है कि मैं पाने के

'ALTER VIEW' must be the first statement in a query batch 

है तो मेरे सवाल है, सबसे अच्छा तरीका यह सुनिश्चित करें कि मेरे विचार को बरकरार रखे हुए है क्या नई कॉलम लंबाई?

उत्तर

17

इस विशिष्ट प्रयोजन के लिए, sp_refreshview का उपयोग करें।

exec sp_refreshview N'dbo.tbl' 
+0

हाँ, यह भी काम करता है, जानकारी के लिए धन्यवाद! – Jason

10

उपयोग GO बयान:

ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100) 
GO 

ALTER VIEW [dbo].[tbl] 
AS 
SELECT col1, col2, col3, col4 
FROM dbo.[tbl] 
GO 
+0

हम्म ... दिलचस्प। मैंने नहीं सोचा था कि यह जोड़ना महत्वपूर्ण था लेकिन मैंने वहां प्रिंट प्रिंट भी लगाए। जाहिर है, अगर इससे पहले कोई प्रिंट स्टेटमेंट हैं तो ALTER VIEW काम नहीं करेगा। लेकिन अन्यथा, यह काम। धन्यवाद समग्र डेवलपर। – Jason

+5

यह केवल एसएसएमएस और संबंधित उपकरणों में काम करता है - 'जाओ' एक ट्रांजैक्ट एसक्यूएल कीवर्ड नहीं है। –

+0

अच्छा बिंदु, @ todda.speot.is। –

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