यदि आप अपने डेटाबेस को प्रबंधित करने के लिए SQL सर्वर प्रबंधन स्टूडियो (SSMS) या किसी अन्य GUI का उपयोग करते हैं, तो आपको "बिंदु और क्लिक" का उपयोग करके डेटाबेस का बैकअप लेने और पुनर्स्थापित करने के लिए उपयोग किया जा सकता है।
आमतौर पर इसमें डेटाबेस पर राइट-क्लिक करना और पुनर्स्थापित . का चयन करना शामिल है या इसी तरह, फिर संकेतों का पालन करना (उदाहरण के लिए, Azure डेटा स्टूडियो में डेटाबेस को पुनर्स्थापित करते समय)।
लेकिन अगर आपको कभी भी इसे टी-एसक्यूएल के साथ करने की आवश्यकता है, तो आप RESTORE DATABASE
का उपयोग कर सकते हैं। बयान।
उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
RESTORE DATABASE World
FROM DISK = N'/var/opt/mssql/Bak/World.bak'
WITH FILE = 1;
यह लगभग उतना ही सरल है जितना इसे प्राप्त किया जा सकता है। RESTORE DATABASE
स्टेटमेंट में काफी जटिल सिंटैक्स होता है (जैसा कि ज्यादातर चीजों T-SQL के साथ होता है), लेकिन यह स्टेटमेंट एक बेसिक, डिफॉल्ट रिस्टोर ऑपरेशन के लिए पर्याप्त है।
इस मामले में, मैंने विश्व . नामक डेटाबेस को पुनर्स्थापित किया एक .bak फ़ाइल से। मैंने FROM DISK
का उपयोग किया है यह निर्दिष्ट करने के लिए कि यह एक .bak फ़ाइल से था, और मैंने उस फ़ाइल को पूरा पथ प्रदान किया। यहां अन्य विकल्पों में FROM TAPE
. शामिल हैं और FROM URL
।
मैंने WITH FILE = 1
. भी शामिल किया है यहाँ लेकिन वैसे भी यह डिफ़ॉल्ट मान है। यह खंड उपयोग करने के लिए बैकअप सेट फ़ाइल संख्या निर्दिष्ट करता है। यानी फ़ाइल में किस बैकअप सेट का उपयोग करना है (एक फ़ाइल में कई बैकअप सेट हो सकते हैं)।
बैकअप सेट की सूची प्राप्त करें
आप RESTORE HEADERONLY
. का उपयोग कर सकते हैं फ़ाइल में बैकअप सेट की सूची प्राप्त करने के लिए। अधिक विशेष रूप से, यह सभी बैकअप सेटों के लिए बैकअप हेडर जानकारी का परिणाम सेट देता है।
उदाहरण:
RESTORE HEADERONLY
FROM DISK = N'/var/opt/mssql/Bak/WideWorldImporters-Full.bak';
यह बहुत सारे कॉलम लौटाता है इसलिए मैं उन सभी को यहां प्रस्तुत नहीं करूंगा।
स्तंभों में से एक को स्थिति . कहा जाता है . इसका उपयोग FILE =
. के साथ किया जाना है डेटाबेस को पुनर्स्थापित करते समय विकल्प।
अधिक विकल्पों के साथ उदाहरण
यहां अधिक विकल्पों के साथ एक उदाहरण दिया गया है:
RESTORE DATABASE [WideWorldImporters]
FROM DISK = N'/var/opt/mssql/Bak/WideWorldImporters-Full.bak'
WITH FILE = 1,
MOVE N'WWI_Primary' TO N'/var/opt/mssql/data/WideWorldImporters.mdf',
MOVE N'WWI_UserData' TO N'/var/opt/mssql/data/WideWorldImporters_UserData.ndf',
MOVE N'WWI_Log' TO N'/var/opt/mssql/data/WideWorldImporters.ldf',
MOVE N'WWI_InMemory_Data_1' TO N'/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1',
NOUNLOAD,
STATS = 5;
यह वास्तव में वह स्क्रिप्ट है जिसे Azure डेटा स्टूडियो ने मेरे लिए तब उत्पन्न किया था जब मैंने GUI इंटरफ़ेस का उपयोग एक पुनर्स्थापना कार्रवाई शुरू करने के लिए किया था। जब आप ऐसा करते हैं, तो Azure डेटा स्टूडियो आपको तुरंत पुनर्स्थापना चलाने का विकल्प देता है, या T-SQL कोड के साथ एक स्क्रिप्ट जेनरेट करने का विकल्प देता है जिसे आप बाद में चला सकते हैं।
इस मामले में, स्क्रिप्ट MOVE
. का उपयोग करती है बैकअप फ़ाइल में प्रत्येक तार्किक फ़ाइल नाम को ऑपरेटिंग सिस्टम पर निर्दिष्ट भौतिक फ़ाइल स्थान पर ले जाने के लिए तर्क। इस मामले में, .bak फ़ाइल ने एक भिन्न भौतिक फ़ाइल स्थान का उपयोग किया (और Windows फ़ाइल पथ का उपयोग किया) और इसलिए इसे मेरे सिस्टम के अनुरूप बदलना पड़ा। यह जानकारी कैसे प्राप्त करें, इसकी व्याख्या के लिए नीचे देखें।
NOUNLOAD
वास्तव में एक टेप विकल्प है। यह सुनिश्चित करता है कि पुनर्स्थापना पूर्ण होने के बाद टेप ड्राइव से अनलोड न हो। यह देखते हुए कि मैं टेप से पुनर्स्थापित नहीं कर रहा था, इस विकल्प को अनदेखा कर दिया गया था।
STATS
तर्क आपको पुनर्स्थापना ऑपरेशन की प्रगति को मापने की अनुमति देता है। यह निर्दिष्ट करता है कि हर बार एक और प्रतिशत पूरा होने पर एक संदेश प्रदर्शित किया जाएगा। यदि आप यहां प्रतिशत मान शामिल नहीं करते हैं, तो SQL सर्वर प्रत्येक 10% पूर्ण होने के बाद एक संदेश प्रदर्शित करेगा।
फ़िलेलिस्टन को पुनर्स्थापित करें
यदि आप पहले वाले की तरह एक स्टेटमेंट बनाना चाहते हैं, जो MOVE
. का उपयोग करता है बैकअप फ़ाइल में प्रत्येक तार्किक फ़ाइल नाम को ऑपरेटिंग सिस्टम पर निर्दिष्ट भौतिक फ़ाइल स्थान पर ले जाने के लिए तर्क, आप RESTORE FILELISTONLY
का उपयोग कर सकते हैं तार्किक फ़ाइल नाम (और अधिक) वापस करने के लिए।
RESTORE FILELISTONLY
एक परिणाम सेट देता है जिसमें बैकअप सेट में निहित डेटाबेस और लॉग फ़ाइलों की सूची होती है।
पिछले उदाहरण से उसी वाइडवर्ल्ड इम्पोर्टर्स .bak फ़ाइल का उपयोग करने का एक उदाहरण यहां दिया गया है:
RESTORE FILELISTONLY
FROM DISK = N'/var/opt/mssql/Bak/WideWorldImporters-Full.bak';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
-[ RECORD 1 ]------------------------- LogicalName | WWI_Primary PhysicalName | D:\Data\WideWorldImporters.mdf Type | D FileGroupName | PRIMARY Size | 1073741824 MaxSize | 35184372080640 FileId | 1 CreateLSN | 0 DropLSN | 0 UniqueId | 8d30f4f9-a463-404f-805a-9bd1c634b66b ReadOnlyLSN | 0 ReadWriteLSN | 0 BackupSizeInBytes | 11993088 SourceBlockSize | 512 FileGroupId | 1 LogGroupGUID | NULL DifferentialBaseLSN | 626000002440500037 DifferentialBaseGUID | 0c5a4141-4a09-4b31-8c83-217870278065 IsReadOnly | 0 IsPresent | 1 TDEThumbprint | NULL SnapshotUrl | NULL -[ RECORD 2 ]------------------------- LogicalName | WWI_UserData PhysicalName | D:\Data\WideWorldImporters_UserData.ndf Type | D FileGroupName | USERDATA Size | 2147483648 MaxSize | 35184372080640 FileId | 3 CreateLSN | 37000000095200001 DropLSN | 0 UniqueId | 28d406e0-78ff-4400-9a4b-3a05d136b1f3 ReadOnlyLSN | 0 ReadWriteLSN | 0 BackupSizeInBytes | 434962432 SourceBlockSize | 512 FileGroupId | 2 LogGroupGUID | NULL DifferentialBaseLSN | 626000002440500037 DifferentialBaseGUID | 0c5a4141-4a09-4b31-8c83-217870278065 IsReadOnly | 0 IsPresent | 1 TDEThumbprint | NULL SnapshotUrl | NULL -[ RECORD 3 ]------------------------- LogicalName | WWI_Log PhysicalName | E:\Log\WideWorldImporters.ldf Type | L FileGroupName | NULL Size | 104857600 MaxSize | 2199023255552 FileId | 2 CreateLSN | 0 DropLSN | 0 UniqueId | 6ac6807e-8774-415b-8efc-e8c569b0855e ReadOnlyLSN | 0 ReadWriteLSN | 0 BackupSizeInBytes | 0 SourceBlockSize | 512 FileGroupId | 0 LogGroupGUID | NULL DifferentialBaseLSN | 0 DifferentialBaseGUID | 00000000-0000-0000-0000-000000000000 IsReadOnly | 0 IsPresent | 1 TDEThumbprint | NULL SnapshotUrl | NULL -[ RECORD 4 ]------------------------- LogicalName | WWI_InMemory_Data_1 PhysicalName | D:\Data\WideWorldImporters_InMemory_Data_1 Type | S FileGroupName | WWI_InMemory_Data Size | 0 MaxSize | 0 FileId | 65537 CreateLSN | 624000000336200003 DropLSN | 0 UniqueId | f65663c8-a250-433e-bbe6-e13a5599a607 ReadOnlyLSN | 0 ReadWriteLSN | 0 BackupSizeInBytes | 980090880 SourceBlockSize | 512 FileGroupId | 3 LogGroupGUID | NULL DifferentialBaseLSN | 626000002440500037 DifferentialBaseGUID | 0c5a4141-4a09-4b31-8c83-217870278065 IsReadOnly | 0 IsPresent | 1 TDEThumbprint | NULL SnapshotUrl | NULL
तो हम देख सकते हैं कि इस फ़ाइल के भौतिक स्थान Windows फ़ाइल पथ का उपयोग करते हैं। उदाहरण के लिए, पहला वाला (WWI_Primary . के तार्किक नाम के साथ) ) का D:\Data\WideWorldImporters.mdf का भौतिक स्थान है .
मेरे मामले में, मैंने लिनक्स के लिए SQL सर्वर में डेटाबेस को पुनर्स्थापित किया (मेरे मैक पर एक डॉकर कंटेनर में चल रहा है), इसलिए जब मैंने इस .bak फ़ाइल को अपने सिस्टम में पुनर्स्थापित किया, तो मुझे अपने सिस्टम के अनुरूप भौतिक पथ बदलना पड़ा।
बेशक, यदि आवश्यक हो, तो आप फ़ाइल पथ को Windows मशीन पर पुनर्स्थापित करते समय भी बदल सकते हैं।
पूर्ण सिंटैक्स
आपकी आवश्यकताओं के आधार पर, डेटाबेस का बैकअप लेना और पुनर्स्थापित करना काफी शामिल हो सकता है। RESTORE
बयान कई अलग-अलग परिदृश्यों को कवर करने के लिए डिज़ाइन किया गया है। विशेष रूप से, इसमें निम्नलिखित पुनर्स्थापना परिदृश्य शामिल हैं:
- एक पूर्ण डेटाबेस बैकअप (एक पूर्ण पुनर्स्थापना) से संपूर्ण डेटाबेस को पुनर्स्थापित करें।
- डेटाबेस का हिस्सा पुनर्स्थापित करें (आंशिक पुनर्स्थापना)।
- विशिष्ट फ़ाइलों या फ़ाइल समूहों को डेटाबेस में पुनर्स्थापित करें (फ़ाइल पुनर्स्थापित करें)।
- विशिष्ट पृष्ठों को डेटाबेस में पुनर्स्थापित करें (एक पृष्ठ पुनर्स्थापित करें)।
- डेटाबेस पर लेन-देन लॉग को पुनर्स्थापित करें (एक लेनदेन लॉग पुनर्स्थापना)।
- डेटाबेस स्नैपशॉट द्वारा कैप्चर किए गए समय में डेटाबेस को वापस लाएं।
पूर्ण सिंटैक्स में बहुत सारे विकल्प होते हैं, इसलिए यदि आपकी आवश्यकताएँ इस लेख के दायरे से अधिक हैं, तो आधिकारिक RESTORE
के लिए Microsoft दस्तावेज़ देखें। वाक्य रचना और स्पष्टीकरण।
डेटाबेस को पुनर्स्थापित करने के लिए विभिन्न विचारों और दृष्टिकोणों के अवलोकन के लिए Microsoft का पुनर्स्थापना और पुनर्प्राप्ति अवलोकन भी पढ़ें।