उच्च उपलब्धता में SQL सर्वर 2012 डेटाबेस को पुनर्स्थापित करना


13

मेरे पास एक डेटाबेस है जो हमेशा उच्च उपलब्धता मोड पर होता है जो एक अलग डेटाबेस पर किसी अन्य डेटाबेस के साथ सिंक्रनाइज़ होता है। मैं .bakप्राथमिक डेटाबेस में फ़ाइल का उपयोग करके कैसे पुनर्स्थापित कर सकता हूं T-SQL?

मैं उच्च उपलब्धता के लिए नया हूं और मुझे सलाह दी गई है कि मुझे एक पुनर्स्थापना करने से पहले डेटाबेस को उच्च उपलब्धता से बाहर निकालने की आवश्यकता है और फिर इसे उच्च उपलब्धता में वापस डाल दिया जाए, लेकिन मुझे यकीन नहीं है।

मुझे उम्मीद है कि मैं AlwaysOnअभी भी प्राथमिक में सीधे बहाल कर सकता हूं जबकि अभी भी सक्षम है और यह माध्यमिक के साथ ऑटो सिंक करेगा।

जवाबों:


15

अपने सलाहकार की बात सुनो। बैकअप को पुनर्स्थापित करके, आप अनिवार्य रूप से डेटाबेस स्कीमा और डेटा को बदल रहे हैं। आपको सिंक्रनाइज़ेशन को बंद करने की आवश्यकता होगी, डीए को हा से हटा दें और प्राथमिक और प्रतिकृति पर पुनर्स्थापना प्रदर्शन करें, प्रतिकृति संस्करण को नॉरकोवेरी के साथ उपयोग करके एक पुनर्स्थापित स्थिति में छोड़ दें। एक बार आपका बैकअप आने के बाद, DB को HA में वापस डालें और फिर से सिंक्रनाइज़ेशन शुरू करें।

हा मिररिंग के समान है और इसी तरह की तकनीक का उपयोग करता है, न कि लगभग नखरे जैसा। आप अपने हा DB को भी इसी तरह से ट्रीट करना चाहेंगे।

कोड निम्नलिखित के समान होगा:

- प्राथमिक

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

- प्राथमिक

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

- माध्यमिक

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY;

- प्राथमिक

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

- माध्यमिक

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

ऊपर दिए गए उत्तर के बारे में प्रश्न ... आपूर्ति किए गए कोड में, PRIMARY को NoRecovery से पुनर्स्थापित किया गया था। यह मेरा विचार था कि केवल रेप्लिका को NoRecovery के साथ किया जाएगा।
Truett

सही करें, लेकिन पढ़ते रहें। लॉग पुनर्स्थापित को कोडित किया गया था और फिर अंत में उपयोग के लिए इसे उपलब्ध करने के लिए रिकॉर्ड के साथ।
स्टीव मैंगमेली

यदि कोई द्वितीयक पर उपलब्धता समूह को फिर से जोड़ने में असमर्थ है, तो एक लेनदेन लॉग को पुनर्स्थापित करने की आवश्यकता हो सकती है। इस स्रोत ने निम्नलिखित त्रुटि को हल करने में मदद की:The mirror database, "dbname", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database.
हंस Vonn

इसलिए लॉग पुनर्स्थापित करता है। ऊपर टिप्पणी देखें।
स्टीव मैंगमेली

@SteveMangiameli इसे डालने के लिए धन्यवाद। यह काम आया है। मैं समझता हूं कि अब आप फ़ाइल के बजाय तार्किक बैकअप डिवाइस से पुनर्स्थापित कर रहे हैं। जब मैं फ़ाइल से पुनर्स्थापित करता हूं तो मैं अलग .bak और .trn फ़ाइलों का उपयोग करता हूं।
हंस वॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.