2009-10-26 6 views
17

मैंने अपने SQL 2008 सर्वर पर FILESTREAM सफलतापूर्वक स्थापित किया है; हालांकि मैंने देखा है कि जब भी मैंने FILESTREAM डेटा वाली पंक्तियां हटा दी हैं, तब भी भौतिक डेटा फ़ाइल हटाई नहीं जा रही है।पंक्ति के बाद FILESTREAM फ़ाइलों को पीछे छोड़ दिया गया है

भौतिक फ़ाइल द्वारा, मेरा मतलब है कि SQLServer की प्रबंधित निर्देशिका में फ़ाइल को अनन्य पहचानकर्ता के साथ फ़ाइल नाम के रूप में मूल फ़ाइल dbase में नहीं जोड़ा गया है।

क्या किसी को पता है कि SQL सर्वर अंततः फ़ाइल को हटा देगा या नहीं? अगर dbase से बहुत सारी बड़ी फाइलें हटा दी गई हैं, तो मैं उम्मीद करता हूं कि अंतरिक्ष को जल्दी से पुनः प्राप्त करने में सक्षम होना चाहिए।

धन्यवाद,

डेल

उत्तर

20

FILESTREAM डेटा लेनदेन नियंत्रण के अधीन है और इसलिए तुरंत हटाया नहीं गया है।

इसके बजाय, SQL Server एक कचरा कलेक्टर चलाता है जो पुराने डेटा को शुद्ध करता है जब यह सुनिश्चित होता है कि इसे अंततः हटा दिया गया था।

documentation से:

FILESTREAM कचरा संग्रहण के लिए एक पृष्ठभूमि कार्य है कि डेटाबेस चौकी प्रक्रिया से शुरू हो रहा है। पर्याप्त लेनदेन लॉग उत्पन्न होने पर एक चेकपॉइंट स्वचालित रूप से चलाया जाता है। अधिक जानकारी के लिए, SQL सर्वर 2008 पुस्तकें ऑनलाइन विषय "CHECKPOINT और लॉग का सक्रिय भाग" देखें (http://msdn.microsoft.com/en-us/library/ms189573.aspx)। यह देखते हुए कि FILESTREAM फ़ाइल संचालन डेटाबेस के लेन-देन लॉग में न्यूनतम रूप से लॉग इन हैं, लेन-देन लॉग रिकॉर्ड की संख्या से पहले कुछ समय लग सकता है, चेकपॉइंट प्रक्रिया और कचरा संग्रह उत्पन्न होता है। यदि यह कोई समस्या बन जाती है, तो आप CHECKPOINT कथन का उपयोग कर कचरा संग्रहण को मजबूर कर सकते हैं।

2

tbl_XXX से हटाएँ @test चेकप्वाइंट @test = 0

भागो यह आपके एसक्यूएल सर्वर में और आप फ़ाइल का निरीक्षण कर सकते फाइल सिस्टम भी से हटा दिया हो रही घोषणा ..

आप सेट कर सकते हैं हटाने के संचालन के बाद फाइल सिस्टम से फाइलों को साफ करने के लिए कचरा कलेक्टर की प्रतीक्षा करने के लिए मिनट या सेकंड की संख्या।

धन्यवाद

हरनाथ

+0

आसान: तालिका चेकप्वाइंट – DanDan

+1

से हटाएँ @DanDan मैं जानता हूँ कि इस साल पहले की तरह है लेकिन मैं सिर्फ अन्य उपयोगकर्ताओं को चेतावनी देना चाहता हूं कि आपकी तालिका में सभी पंक्तियों को गलती से हटाने के खतरे के बारे में चेतावनी देना है जब 'तालिका से हटाएं' आदेश कमांड है उपयोग किया गया। मैंने कोशिश की और यह मेरी मेज में सभी पंक्तियों को हटा दिया। सौभाग्य से मेरी तालिका में नमूना डेटा शामिल है। – corix010

13

उपयोग

sp_filestream_force_garbage_collection 

दुर्भाग्य से यह केवल काम करता है> = SQL सर्वर 2012

+2

एफवाईआई - यह केवल एसक्यूएल 2012 – NotMe

+0

हाँ धन्यवाद के लिए है। मुझे इसकी भी आवश्यकता है। 2012 में अपग्रेड करने का एक अच्छा कारण! – LaBracca

+0

मैंने अपने स्थानीय SQL सर्वर 2012 एक्सप्रेस पर यह कोशिश की और यह काम नहीं लग रहा है। – corix010

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