SQL सर्वर डेटाबेस अपने डेटा और ऑब्जेक्ट्स को फाइलों में स्टोर करते हैं। प्रत्येक डेटाबेस में कम से कम एक डेटा फ़ाइल (और एक लॉग फ़ाइल) होती है, लेकिन यह केवल एक तक ही सीमित नहीं है - इसमें कई डेटा फ़ाइलें हो सकती हैं। यदि आप कभी भी खुद को ऐसी स्थिति में पाते हैं जहां आपको किसी डेटाबेस से डेटा फ़ाइल को निकालने की आवश्यकता होती है, तो आपको इसे हटाने से पहले पहले उस फ़ाइल को खाली करना होगा।
लेकिन चिंता न करें, किसी फ़ाइल को खाली करने से वास्तव में डेटा डिलीट नहीं होता है। यह केवल फ़ाइल के डेटा को उसी फ़ाइल समूह में अन्य फ़ाइलों में माइग्रेट करता है।
नीचे दिए गए उदाहरण प्रदर्शित करते हैं कि डेटा फ़ाइल को कैसे खाली किया जाए, फिर उसे Transact-SQL का उपयोग करके डेटाबेस से हटा दें।
त्वरित उदाहरण
डेटा फ़ाइल को खाली करने और उसे डेटाबेस से निकालने का तरीका दिखाने के लिए यहां एक त्वरित उदाहरण दिया गया है:
-- Empty the file DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO -- Remove the file ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
तो जैसा कि समझाया गया है, यह फ़ाइल को खाली कर देता है, फिर इसे डेटाबेस से पूरी तरह से हटा देता है। जब आप EMPTYFILE
. का उपयोग करते हैं , यह फ़ाइल से सभी डेटा को उसी फ़ाइल समूह में अन्य फ़ाइलों में ले जाता है। इसलिए, आपको यह सुनिश्चित करने की आवश्यकता होगी कि यह फ़ाइल समूह में एकमात्र फ़ाइल नहीं है (अन्यथा आपको एक त्रुटि मिलेगी)। EmptyFile आपको यह भी आश्वासन देता है कि फ़ाइल में कोई नया डेटा नहीं जोड़ा जाएगा।
एक लंबा उदाहरण
यदि आप पिछले उदाहरण से भ्रमित हैं, तो एक नया डेटाबेस बनाने, एक नई डेटा फ़ाइल जोड़ने, फिर उसे खाली करने, फिर उसे हटाने की प्रक्रिया पर चलते हैं।
डेटाबेस बनाएं और उसकी डेटा फ़ाइल जानकारी देखें
-- Switch to the master database USE master; GO -- Create a new database CREATE DATABASE Test; GO -- View it's data file and log file info USE Test; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO
Test
. नामक एक नया डेटाबेस बनाने से पहले सबसे पहले हम मास्टर डेटाबेस पर स्विच करते हैं . फिर हम नए डेटाबेस पर स्विच करते हैं और sys.database_files
से इसकी डेटाबेस फ़ाइलों के बारे में कुछ जानकारी का चयन करते हैं सिस्टम कैटलॉग व्यू।
नई डेटा फ़ाइल जोड़ें
-- Add a new data file ALTER DATABASE Test ADD FILE ( NAME = Test2, FILENAME = '/var/opt/mssql/data/Test2.mdf', SIZE = 8MB ); GO -- View it's data file and log file info USE Test; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO
अब हम Test2
. के तार्किक नाम के साथ एक नई डेटा फ़ाइल जोड़ते हैं और /var/opt/mssql/data/Test2.mdf
का भौतिक पथ (ध्यान दें कि यह एक Linux/Mac पथ है। यदि Windows का उपयोग कर रहे हैं, तो फ़ॉरवर्ड स्लैश के बजाय बैकस्लैश का उपयोग करें)। फिर से हम sys.database_files
. को क्वेरी करते हैं सिस्टम कैटलॉग दृश्य ताकि हम अपनी नई फ़ाइल का विवरण देख सकें।
डेटा फ़ाइल खाली करें और उसे निकालें
इस उदाहरण के प्रयोजनों के लिए, मान लें कि डेटाबेस को उत्पादन में डाल दिया गया है और हमारे द्वारा अभी बनाई गई डेटा फ़ाइल डेटा से भरी हुई है। अब हम उस फाइल को हटाना चाहते हैं (किसी भी कारण से)। लेकिन इससे पहले कि हम फ़ाइल को हटा दें, हमें इसे खाली करना होगा (इसका डेटा दूसरी फ़ाइल में माइग्रेट करना)।
ऐसा करने का तरीका यहां बताया गया है:
-- Empty the new data file DBCC SHRINKFILE (Test2, EMPTYFILE); GO -- Remove the file ALTER DATABASE Test REMOVE FILE Test2; GO -- View it's data file and log file info USE Test; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO
तो यह इस पृष्ठ पर पहले उदाहरण की तरह है, सिवाय हमारे डेटाबेस का एक अलग नाम है। और इस उदाहरण में, हम sys.database_files
. को क्वेरी करते हैं यह पुष्टि करने के लिए कि फ़ाइल वास्तव में हटा दी गई है।