Database
 sql >> डेटाबेस >  >> RDS >> Database

बैकअप और पुनर्स्थापित FILESTREAM-सक्षम डेटाबेस

अपने पिछले लेखों में, मैंने समझाया कि SQL सर्वर इंस्टेंस में FILESTREAM सुविधा को कैसे बनाया और कॉन्फ़िगर किया जाए। इसके अलावा, मैंने प्रदर्शित किया कि एक तालिका कैसे बनाई जाए जिसमें एक FILESTREAM कॉलम हो और उसमें से डेटा डालने और हटाने के लिए गर्म हो।

इस लेख में, मैं यह समझाने जा रहा हूं कि FILESTREAM-सक्षम डेटाबेस का बैकअप और पुनर्स्थापना कैसे करें। इसके अलावा, मैं यह प्रदर्शित करने जा रहा हूं कि डेटाबेस को ऑफ़लाइन किए बिना FILESTREAM फ़ाइल समूह को कैसे पुनर्स्थापित किया जाए।

जैसा कि मैंने अपने पिछले लेखों में बताया था, जब हम SQL सर्वर इंस्टेंस पर FILESTREAM को सक्षम करते हैं, तो हमें एक FILESTREAM कंटेनर बनाने की आवश्यकता होती है जिसमें FILESTREAM फ़ाइल समूह हो। जब हम FILESTREAM-सक्षम डेटाबेस का बैकअप लेते हैं, तो FILESTREAM फ़ाइल समूह का बैकअप बैकअप सेट में शामिल किया जाएगा। जब हम डेटाबेस को पुनर्स्थापित करते हैं, तो SQL सर्वर डेटाबेस और FILESTREAM कंटेनर और उसके भीतर की फ़ाइलों को पुनर्स्थापित करेगा।

जब हम किसी FILESTREAM-सक्षम डेटाबेस का बैकअप लेते हैं, तो वह:

  • डेटाबेस की सभी उपलब्ध डेटा फ़ाइलों का बैकअप लें।
  • FILESTREAM फ़ाइल समूह और उसमें मौजूद फ़ाइलों का बैकअप लें।
  • बैकअप टी-लॉग।

SQL सर्वर केवल FILESTREAM कंटेनर का बैकअप लेने की सुविधा देता है। यदि FILESTREAM कंटेनर में फ़ाइलें दूषित हो जाती हैं, तो हमें संपूर्ण डेटाबेस को पुनर्प्राप्त करने की आवश्यकता नहीं है। हम केवल FILESTREAM फ़ाइल समूह को पुनर्स्थापित कर सकते हैं।

इस डेमो में, मैं जा रहा हूँ:

  • यह बताएं कि FS डेटाबेस का पूर्ण बैकअप कैसे लें और केवल FILESTREAM कंटेनर का बैकअप कैसे लें।
  • स्पष्ट करें कि FILESTREAM-सक्षम डेटाबेस को कैसे पुनर्स्थापित किया जाए।
  • FILESTREAM कंटेनर को ऑनलाइन और ऑफलाइन कैसे पुनर्स्थापित करें। नोट:SQL सर्वर एंटरप्राइज़ संस्करण और डेवलपर संस्करण ऑनलाइन पुनर्स्थापना का समर्थन करता है।

डेमो सेटअप:

इस डेमो में, मैं उपयोग करने जा रहा हूँ:

  1. डेटाबेस :SQL सर्वर 2017
  2. सॉफ्टवेयर :SQL सर्वर प्रबंधन स्टूडियो।

FILESTREAM-सक्षम डेटाबेस का बैकअप लेना

बैकअप प्रक्रिया को प्रदर्शित करने के लिए, मैंने FileStream_Demo नामक एक FILESTREAM-सक्षम डेटाबेस बनाया है . इसमें Document_Content . नाम की एक FILESTREAM तालिका है ।

पूर्ण डेटाबेस बैकअप

FILESTREAM-सक्षम डेटाबेस का बैकअप लेना एक सीधी प्रक्रिया है। इसका पूर्ण बैकअप बनाने के लिए, निम्न T-SQL स्क्रिप्ट निष्पादित करें।

बैकअप डेटाबेस [फाइलस्ट्रीम_डेमो] टू डिस्क =एन'ई:\बैकअप\फाइलस्ट्रीम_डेमो.बक' NOFORMAT, NOINIT, NAME =N'FileStream_Demo-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS =10GO

उपरोक्त बैकअप कमांड के निष्पादन द्वारा उत्पन्न बैकअप लॉग निम्नलिखित है:

/*डेटाफाइल का बैकअप शुरू करें*/डेटाबेस 'फाइलस्ट्रीम_डेमो' के लिए 568 पेज प्रोसेस किए गए, फाइल 'फाइलस्ट्रीम_डेमो' फाइल 1 पर फाइल करें।/*FILESTREAM कंटेनर का बैकअप शुरू करें*/ 10 प्रतिशत संसाधित। 20 प्रतिशत संसाधित। 30 प्रतिशत संसाधित। 40 प्रतिशत संसाधित। 50 प्रतिशत संसाधित। 60 प्रतिशत संसाधित। ' फ़ाइल पर 1./*FILESTREAM कंटेनर का बैकअप प्रारंभ करें*/ डेटाबेस 'फाइलस्ट्रीम_डेमो' के लिए 4 पेज प्रोसेस किए गए, फाइल पर 'फाइलस्ट्रीम_डेमो_लॉग' फाइल 1.100 प्रतिशत प्रोसेस की गई। बैकअप डेटाबेस ने 18.410 सेकेंड (47.391 एमबी/सेकंड) में 111677 पेज सफलतापूर्वक प्रोसेस किए।

जैसा कि मैंने लेख की शुरुआत में उल्लेख किया है, पहले, SQL सर्वर प्राथमिक डेटाफ़ाइल का बैकअप लेता है, फिर द्वितीयक डेटा फ़ाइलों और अंत में, लेन-देन लॉग। जैसा कि आप बैकअप लॉग में देख सकते हैं, सबसे पहले, SQL सर्वर बैकअप प्राथमिक डेटाफ़ाइल फिर FILESTREAM फ़ाइल समूह और इससे जुड़े डेटा और अंत में लेनदेन लॉग।

FILESTREAM कंटेनर का बैकअप

जैसा कि मैंने लेख की शुरुआत में उल्लेख किया है, हम FILESTREAM कंटेनर का बैकअप भी बना सकते हैं। FILESTREAM कंटेनर का बैकअप बनाने के लिए, निम्न T-SQL स्क्रिप्ट निष्पादित करें।

बैकअप डेटाबेस [फाइलस्ट्रीम_डेमो] फाइलग्रुप =एन'डमी-डॉक्यूमेंट्स टू डिस्क =एन'ई:\ बैकअप \ एफएस_कंटेनर.बक' NOFORMAT, NOINIT, NAME =N'FileStream_Demo-Full डेटाबेस बैकअप', SKIP, NOREWIND के साथ, NOUNLOAD, STATS =10GO

FILESTREAM-सक्षम डेटाबेस को पुनर्स्थापित करें

जब हम FILESTREAM डेटाबेस को पुनर्स्थापित करते हैं, SQL FILESTREAM कंटेनर के भीतर सभी फ़ाइलों के साथ FileStream कंटेनर को पुनर्स्थापित करता है।

डेटाबेस को पुनर्स्थापित करने के लिए, निम्नलिखित कार्य करें:

  1. SSMS में, डेटाबेस पर राइट-क्लिक करें और डेटाबेस पुनर्स्थापित करें select चुनें ।
  2. पुनर्स्थापित करें संवाद बॉक्स में, डिवाइस select चुनें और ब्राउज़ करें . क्लिक करें . एक और डायलॉग बॉक्स खुलेगा, डायलॉग बॉक्स में, क्लिक करें  जोड़ें
  3. बैकअप फ़ाइल ढूंढें . में संवाद बॉक्स, निर्देशिका संरचना के माध्यम से नेविगेट करें, उचित बैकअप पर क्लिक करें और ठीक . क्लिक करें ।
  4. एक बार बैकअप जानकारी पुनर्स्थापित करने के लिए बैकअप सेट में लोड हो जाने पर ग्रिड दृश्य, ठीक click क्लिक करें प्रक्रिया को बहाल करने के लिए शुरू करने के लिए।

वैकल्पिक रूप से, आप निम्न आदेश निष्पादित करके डेटाबेस को पुनर्स्थापित कर सकते हैं:

उपयोग [मास्टर]डेटा को पुनर्स्थापित करें [FileStream_Demo] डिस्क से =N'E:\Backups\FileStream_Demo.bak' फ़ाइल के साथ =1, NOUNLOAD, STATS =5GO

FILESTREAM-सक्षम डेटाबेस पुनर्प्राप्ति परिदृश्य

FILESTREAM फ़ाइल समूह फ़ाइल समूह को पुनर्स्थापित करने की प्रक्रिया की तरह प्रक्रिया को पुनर्स्थापित करता है।

पुनर्स्थापना परिदृश्य उत्पन्न करने के लिए, FileStream-Demo नामक एक FILESTREAM-सक्षम डेटाबेस बनाएं . डेटाबेस में Document_Content . नाम की एक FILESTREAM तालिका है . Document_Content . में कुछ यादृच्छिक डेटा और फ़ाइलें डालें टेबल।

तालिका में सम्मिलित फ़ाइलों के विवरण को भरने के लिए निम्न क्वेरी निष्पादित करें।

 रूट डायरेक्टरी, फाइलनाम, फाइल एट्रिब्यूट, फाइलक्रिएटडेट, फाइलसाइज, फाइलस्ट्रीमकोल.पाथनाम() फाइलसाइज विवरण द्वारा डॉक्यूमेंट_कंटेंट ऑर्डर से फाइलपाथ के रूप में चुनें

आउटपुट इस प्रकार है:

FILESTREAM कंटेनर का स्क्रीनशॉट निम्न है:

सबसे पहले, डेटाबेस का पूर्ण बैकअप उत्पन्न करें। इसके लिए निम्न कमांड निष्पादित करें।

बैकअप डेटाबेस [फाइलस्ट्रीम_डेमो] टू डिस्क =एन'ई:\बैकअप\Full_FileStream_Demo_20180810.bak' NOFORMAT, NOINIT,NAME =N'FileStream_Demo-Full Database Backup' के साथ

दूसरे, डमी-दस्तावेज़ नामक FILESTREAM फ़ाइल समूह का FILEGRUP बैकअप जेनरेट करें निम्न आदेश निष्पादित करके:

बैकअप डेटाबेस [फाइलस्ट्रीम_डेमो] फाइलग्रुप =एन'डमी-डॉक्यूमेंट्स टू डिस्क =एन'ई:\बैकअप\फाइलस्ट्रीम_फाइलग्रुप_डेमो.बक' NOFORMAT, NOINIT, NAME =N'FileStream_Demo-Full FILEGROUP बैकअप के साथ'

FILESTREAM दूषण उत्पन्न करने के लिए, FILESTREAM कंटेनर से कुछ फ़ाइलें हटाएँ। एक बार जब वे फ़ाइलें हटा दी जाती हैं, तो निम्न आदेश निष्पादित करके "Document_Content" से डेटा पुनर्प्राप्त करने का प्रयास करें:

Document_Content से FileStream_DemoGoselect * का उपयोग करें

आपको निम्न त्रुटि मिलेगी:

Msg 233, Level 20, State 0, Line 122A ट्रांसपोर्ट-लेवल एरर सर्वर से परिणाम प्राप्त करते समय उत्पन्न हुई है। (प्रदाता:साझा मेमोरी प्रदाता, त्रुटि:0 - पाइप के दूसरे छोर पर कोई प्रक्रिया नहीं है।)

निम्न स्क्रीनशॉट देखें:

अब, हमें इस त्रुटि को ठीक करने के लिए FILESTREAM कंटेनर को पुनर्स्थापित करने की आवश्यकता है। हमने डमी-दस्तावेज़ . का पूर्ण बैकअप और बैकअप जेनरेट किया है फ़ाइल समूह।

हम FILESTREAM फ़ाइल समूह को पुनर्स्थापित करके पूरे FILESTREAM कंटेनर को पुनर्स्थापित कर सकते हैं। मैं दिखाने जा रहा हूँ:

  1. FILESTREAM फ़ाइल समूह की ऑफ़लाइन पुनर्स्थापना।
  2. FILESTREAM फ़ाइल समूह की ऑनलाइन पुनर्स्थापना।

FILESTREAM कंटेनर फ़ाइलग्रुप की ऑफ़लाइन पुनर्स्थापना

चूंकि मैंने FILESTREAM कंटेनर से फ़ाइलें हटा दी थीं, इसलिए हमें संपूर्ण डेटाबेस को पुनर्स्थापित करने की आवश्यकता नहीं है। इसलिए पूरे डेटाबेस को पुनर्स्थापित करने के बजाय, हम एकमात्र फ़ाइल समूह को पुनर्स्थापित करेंगे। ऐसा करने के लिए, पहले उन डेटा परिवर्तनों को कैप्चर करने के लिए एक टेल-लॉग बैकअप जेनरेट करें, जिनका बैकअप नहीं लिया गया था। डेटाबेस को पुनर्स्थापित करने की स्थिति में लाने के लिए NORECOVERY विकल्प का उपयोग करके टेल-लॉग बैकअप लिया जाना चाहिए, और यह डेटाबेस पर बैकअप लागू करने की क्षमता देता है। ऐसा करने के लिए, निम्न क्वेरी निष्पादित करें:

बैकअप लॉग [FileStream_Demo] डिस्क पर ='E:\Backups\FileStream_Filegroup_Demo_Log_1.trn' NORECOVERY के साथ

एक बार टेल-लॉग बैकअप जेनरेट हो जाने के बाद, डेटाबेस रिस्टोरिंग मोड में होगा। अब, हम NORECOVERY विकल्प वाले डेटाबेस पर FILEGROUP बैकअप लागू कर सकते हैं। इसके लिए निम्न कमांड निष्पादित करें:

MastergoRESTORE DATABASE [FileStream_Demo] FILE='Dummy-Documents' from DISK =N'E:\Backups\FileStream_Filegroup_Demo.bak' का उपयोग NORECOVERY,REPLACE के साथ करें;

अब टेल-लॉग बैकअप को RECOVERY विकल्प के साथ लागू करें। इसके लिए निम्न कमांड निष्पादित करें:

लॉग को पुनर्स्थापित करें [FileStream_Demo] डिस्क से =N'E:\Backups\FileStream_Filegroup_Demo_Log_1.trn'

एक बार बैकअप पुनर्स्थापित हो जाने पर, डेटाबेस ऑनलाइन हो जाएगा, और सभी फ़ाइलें FILESTREAM कंटेनर में पुनर्स्थापित हो जाएंगी। इसे सत्यापित करने के लिए, निम्न आदेश निष्पादित करें:

 रूट डायरेक्टरी, फाइलनाम, फाइल एट्रिब्यूट, फाइलक्रिएटडेट, फाइलसाइज, फाइलस्ट्रीमकोल.पाथनाम() फाइलसाइज विवरण द्वारा डॉक्यूमेंट_कंटेंट ऑर्डर से फाइलपाथ के रूप में चुनें

उपरोक्त क्वेरी का आउटपुट इस प्रकार है:

FILESTREAM फ़ाइल समूह की ऑनलाइन पुनर्स्थापना

SQL सर्वर एंटरप्राइज़ संस्करण का उपयोग करके, हम डेटाबेस के ऑनलाइन होने पर बैकअप को पुनर्स्थापित कर सकते हैं। उदाहरण के लिए, यदि द्वितीयक फ़ाइल समूह FG-1 की फ़ाइल F1 दूषित है, तो हम फ़ाइल F1 को पुनर्स्थापित कर सकते हैं जबकि डेटाबेस ऑनलाइन रहता है। ऑफ़लाइन पुनर्स्थापना का क्रम पुनर्स्थापित करें, और ऑनलाइन पुनर्स्थापना समान हैं।

जैसा कि ऊपर बताया गया है, FILESTREAM फ़ाइल समूह की ऑनलाइन पुनर्स्थापना करने के लिए, डमी-दस्तावेज़ बनाएं डेटाफ़ाइल ऑफ़लाइन। इसके लिए निम्न कमांड निष्पादित करें।

MastergoAlter डेटाबेस का उपयोग करें [FileStream_Demo] फ़ाइल को संशोधित करें (NAME='Dummy-Documents',OFFLINE)

फ़ाइल की स्थिति सत्यापित करने के लिए, निम्न क्वेरी निष्पादित करें:

[FileStream_Demo]Goselect File_id, type_desc,name, Physical_name, State_desc, Size from FileStream_Demo.sys.database_files
का उपयोग करें

आउटपुट इस प्रकार है:

हमने पहले ही डमी-दस्तावेज़ . का बैकअप ले लिया है फ़ाइल समूह इसलिए, डेटा फ़ाइल ऑफ़लाइन होने के बाद, NORECOVERY विकल्प के साथ डेटाबेस पर फ़ाइलग्रुप बैकअप को पुनर्स्थापित करें। इसके लिए निम्न कमांड निष्पादित करें:

MastergoRESTORE DATABASE [FileStream_Demo] FILE='Dummy-Documents' from DISK =N'E:\Backups\FileStream_Filegroup_Demo.bak' का उपयोग NORECOVERY, REPLACE के साथ करें;

अब, यह सुनिश्चित करने के लिए डेटाबेस का लॉग बैकअप लें कि जिस बिंदु पर डेटाफ़ाइल ऑफ़लाइन हुई थी, उसे कैप्चर किया गया है। इसके लिए निम्न कमांड निष्पादित करें:

बैकअप लॉग [FileStream_Demo] डिस्क पर ='E:\Backups\FileStream_Filegroup_Demo_Log1.trn'

अंतिम टी-लॉग बैकअप को पुनर्स्थापित करने के लिए निम्न आदेश निष्पादित करें।

MastergoRESTORE लॉग का उपयोग करें [FileStream_Demo] डिस्क से =N'E:\Backups\FileStream_Filegroup_Demo_Log1.trn'

एक बार लॉग बैकअप पुनर्स्थापित हो जाने पर, FILESTREAM कंटेनर की सभी फ़ाइलें पुनर्स्थापित कर दी जाएंगी, और फ़ाइल समूह ऑनलाइन हो जाएगा। इसे सत्यापित करने के लिए, निम्न क्वेरी निष्पादित करें:

[FileStream_Demo]Goselect File_id, type_desc,name, Physical_name, State_desc, Size from FileStream_Demo.sys.database_files
का उपयोग करें

आउटपुट इस प्रकार है:

एक बार बैकअप बहाल हो जाने के बाद, डेटाबेस ऑनलाइन हो जाएगा और सभी फाइलों को FILESTREAM कंटेनर में पुनर्स्थापित कर दिया जाएगा। इसे सत्यापित करने के लिए, निम्न आदेश निष्पादित करें:

 रूट डायरेक्टरी, फाइलनाम, फाइल एट्रिब्यूट, फाइलक्रिएटडेट, फाइलसाइज, फाइलस्ट्रीमकोल.पाथनाम() फाइलसाइज विवरण द्वारा डॉक्यूमेंट_कंटेंट ऑर्डर से फाइलपाथ के रूप में चुनें

आउटपुट इस प्रकार है:

सारांश

इस लेख में, मैंने समझाया:

  1. बैकअप कैसे लें और FILESTREAM-सक्षम डेटाबेस और FILESTREAM फ़ाइल समूह को पुनर्स्थापित कैसे करें।
  2. FILESTREAM फ़ाइल समूह को ऑनलाइन और ऑफलाइन कैसे पुनर्स्थापित करें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सामान्य ईआर आरेख गलतियाँ

  2. डेटाबेस उपयोगकर्ता विशेषाधिकार क्या हैं?

  3. री-आईडी जोखिम को कम करने के लिए अप्रत्यक्ष पहचानकर्ताओं को गुमनाम करना

  4. SQL क्या है और इसे कैसे शुरू करें?

  5. उपयोगकर्ता क्या करते हैं इसका ट्रैक कैसे रखें