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

SQL सर्वर डेटाबेस (T-SQL) को पुनर्स्थापित करें

यदि आप अपने डेटाबेस को प्रबंधित करने के लिए 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 का पुनर्स्थापना और पुनर्प्राप्ति अवलोकन भी पढ़ें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में sys.sql_modules, sys.system_sql_modules और sys.all_sql_modules के बीच अंतर

  2. PARSE () का उपयोग करके SQL सर्वर में एक स्ट्रिंग को दिनांक/समय में कैसे परिवर्तित करें

  3. जहां SQL सर्वर टेक्स्ट डेटा प्रकार पर क्लॉज

  4. डायनामिक कॉलम काउंट के साथ पंक्ति मानों को कॉलम में कैसे बदलें?

  5. T-SQL का उपयोग करके SQL सर्वर डेटाबेस के संयोजन को कैसे बदलें