2010-02-15 5 views
11

एसक्यूएल सर्वर 2008 SP1 के साथ निकालने में असमर्थ, मैं केवल तालिका कि इसके साथ जुड़े एक Filestream था हटा दिया है लेकिन हर बार मैं निम्न कार्य करने का प्रयास:एसक्यूएल सर्वर 2008: एक FILESTREAM फ़ाइल और Filegroup

बदलने डेटाबेस ConsumerMarketingStore हटाने फ़ाइल CMS_JobInstanceFiles

बदलने डेटाबेस ConsumerMarketingStore filegroup हटाने JobInstanceFiles

मैं निम्न अपवाद प्राप्त करें:

संदेश 5042, स्तर 16, राज्य 10, पंक्ति 2 फ़ाइल 'CMS_JobInstanceFiles' को हटाया नहीं जा सकता क्योंकि यह खाली नहीं है। संदेश 5042, स्तर 16, राज्य 11, रेखा 3 फ़ाइल समूह 'जॉब इंस्टेंसफाइल' को हटाया नहीं जा सकता क्योंकि यह खाली नहीं है।

दुनिया में कैसे मैं फ़ाइलस्ट्रीम फ़ाइल और फ़ाइल समूह से छुटकारा पाता हूं? धन्यवाद!

+0

यह सर्वरFault.com पर नहीं होना चाहिए? – mjv

उत्तर

12

करें कि तालिका में आप गिरा वास्तव में केवल तालिका कि filestream फ़ाइल का उपयोग कर रहा है सुनिश्चित करें। अगर आपके पास फिलस्ट्रीम कॉलम के साथ अन्य टेबल हैं और कहें कि आपने कॉलम गिरा दिए हैं, तो टेबल अभी भी फाइलस्ट्रीम फ़ाइल का उपयोग करेगा। जिस तरह से इस प्रयोग से छुटकारा पाने के शून्य के लिए तालिका की Filestream filegroup स्थापित करने के लिए है:

alter table t1 set (filestream_on = "NULL") 
+0

आप एक अद्भुत आदमी हैं। एमएस मंचों के दिनों के बाद, एमएस में लोगों से बात करते हुए, और एसओ, आप कुछ उपयोगी और उत्तर प्रदान करने वाले पहले व्यक्ति हैं। मेरे पास एक सारणी थी कि एक बिंदु पर फ़ाइल कॉलम था लेकिन मैंने इसे हटा दिया। यही कारण है कि मैं मुद्दों में भाग रहा था। बहुत बहुत धन्यवाद। –

+0

बिल्कुल मुझे क्या चाहिए, धन्यवाद। – Sam

+0

एफडब्ल्यूआईडब्ल्यू, मैंने इसे सभी तालिकाओं से filestream हटाने के लिए इस्तेमाल किया। इसने किसी भी टेबल को सूचीबद्ध करने में त्रुटि डाली जो अभी भी फाइलस्ट्रीम फ़ील्ड था, जो बहिष्कृत फाइलस्ट्रीम फ़ील्ड को शुद्ध करने के लिए उपयोगी था। –

1

आप DBCC SHRINKFILE (CMS_JobInstanceFiles, EMPTYFILE)

हो जाएगा ताकि ध्वज के रूप में "खाली" फ़ाइल को चलाने के लिए अनुमति देते हैं और यह गिरा दिया जाना पड़ता है।

बेशक, ALTER DATABASE इसका उल्लेख नहीं करता है, लेकिन DBCC SHRINKFILE करता है ... स्पष्ट, आह?

select * 
from ConsumerMarketingStore.sys.tables t 
join ConsumerMarketingStore.sys.data_spaces ds 
on t.filestream_data_space_id = ds.data_space_id 
and ds.name = 'JobInstanceFiles' 

ऊपर क्वेरी का परिणाम खाली होना चाहिए:

+0

मैंने वास्तव में कोशिश की, आपको निम्न अपवाद मिलता है: गुण SIZE, MAXSIZE, या FILEGROWTH FILESTREAM डेटा फ़ाइल 'CMS_JobInstanceFiles' –

+0

@ जेम्स अलेक्जेंडर के लिए निर्दिष्ट नहीं किया जा सकता है: कौन सा आदेश कृपया? डीबीसीसी या वैकल्पिक डाटाबेस? – gbn

+0

मुझे विश्वास है कि डीबीसीसी SHRINKFILE फिलस्ट्रीम फ़ाइलों के साथ काम नहीं करता है। –

0

आप तालिका ड्रॉप करने के बाद, कचरा कलेक्टर डेटा को साफ करने के कुछ समय लगता है। ऐसा होने का कारण हो सकता है। आप CHECKPOINT जारी करके कचरा संग्रह को मजबूर कर सकते हैं।

आप यह सत्यापित कर सकते हैं कि FILESTREAM डेटा को फिलस्ट्रीम डेटा कंटेनर पर जाकर साफ़ किया गया है या नहीं। यदि FILESTREAM डेटा हटा दिया गया है तो ALTER DATABASE dbname REMOVE FILE आमतौर पर सफल होगा। एक बार यह हो जाने के बाद, आप ALTER DATABASE dbname REMOVE FILEGROUP जारी कर सकते हैं।

+0

जैकब, AFAIK को डेटास्ट्रीम फ़ाइल को छोड़ने के लिए डेटा को कचरा नहीं होने की आवश्यकता है। यह आवश्यक है कि फ़ाइल किसी भी तालिका द्वारा उपयोग नहीं की जा रही है (मेरा जवाब देखें)। इसके अलावा, ध्यान दें कि CHECKPOINT केवल एक साधारण वसूली मॉडल के तहत जीसी को मजबूर करेगा और यह अभी भी जीसी के एक ही आमंत्रण को मजबूर करेगा, जो सभी योग्य फाइलों को एकत्र नहीं कर सकता है। –

0

@inam - मेरी स्थिति थोड़ा अलग थी; मैंने एक दूसरा फ़ाइल समूह बनाया और इसमें एक क्लस्टर इंडेक्स ले जाया गया। इसके बाद मैंने द्वितीयक फ़ाइल समूह में क्लस्टर इंडेक्स को हटा दिया। उसके बाद मैंने फ़ाइल समूह को हटाने की कोशिश की, लेकिन मुझे त्रुटि मिल रही है, फ़ाइल समूह खाली नहीं है।

मैंने कुछ अन्य पोस्ट देखी जो डेटा को उसी फ़ाइल समूह में किसी अन्य फ़ाइल में स्थानांतरित करने के लिए इंगित करते हैं। यहां समस्या यह थी कि मेरे पास फ़ाइल समूह में केवल एक फ़ाइल थी, और मैं फ़ाइल समूह और फ़ाइल को हटाना चाहता था।

मैं जिस कामकाज के साथ आया था वह इस प्रकार है। मैंने तालिका 1 से तालिका 2 में सभी रिकॉर्ड्स कॉपी किए हैं (तालिका 1 से तालिका 2 में चयन करें)

मैंने तालिका 1 हटा दी; उसके बाद मैं फ़ाइल समूह 2 और डेटा फ़ाइल को हटाने में सक्षम था।

आखिरकार मैंने टेबल 2 को तालिका 1 में बदल दिया।

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