एक संग्रहीत कार्यविधि से SQL सर्वर डेटाबेस को पुनर्स्थापित करने के लिए एक गतिशील स्क्रिप्ट
डायनेमिक SQL स्क्रिप्ट का उपयोग करके एक केंद्रीकृत, सामान्य और पुन: उपयोग योग्य संग्रहीत कार्यविधि बनाएं जो व्यापक रखरखाव योजना के हिस्से के रूप में कई मापदंडों का उपयोग करके डेटाबेस को पुनर्स्थापित कर सके
प्रक्रिया
डेटाबेस को पुनर्स्थापित करने की प्रक्रिया को SSMS से स्क्रिप्ट किया जा सकता है। जब इसे एक संग्रहीत प्रक्रिया में सहेजा जाता है, तो इसे अन्य संसाधित या सर्वर से बुलाया जा सकता है, और विशेष रूप से एक संयुक्त रखरखाव योजना के हिस्से के रूप में उपयोगी होता है।
नीचे हमने दो स्क्रिप्ट बनाई हैं।
सरल स्क्रिप्ट के साथ एसएसएमएस से उत्पन्न कोड का उपयोग करें और संग्रहीत प्रक्रिया की सामग्री को प्रतिस्थापित करें।
सामान्य स्क्रिप्ट के साथ, एकल डेटाबेस को चर का उपयोग करके पुनर्स्थापित किया जा सकता है, जिसका अर्थ है कि आप इसका पुन: उपयोग कर सकते हैं।
Simple Script
USE [utilities]GOCREATE PROC [maint].RestoreDatabase_{dbname} AS BEGINRESTORE DATABASE [dbname] FROM DISK=N'c:\backupfolder\{dbname}.bak' WITH FILE= 1,MOVE N'{dbname}' TO N'd:\database\{dbname}.mdf',MOVE N'{dbname}_log' TO N'e:\database\{dbname}.ldf',NOUNLOAD, REPLACE, STATS= 10,STANDBY=N'e:\database\ROLLBACK_UNDO_{dbname}.bak'ENDGO
पुन: प्रयोज्य स्क्रिप्ट
यह स्क्रिप्ट कई मापदंडों का उपयोग करती है ताकि इसे कहीं और से बुलाया जा सके, इसलिए यदि आवश्यक हो तो इसे फिर से इस्तेमाल किया जा सकता है और क्रॉस सर्वर कहा जा सकता है।
- @dbname - डेटाबेस नाम जिसे आप कॉल करना चाहते हैं
- @Directory_Bak - वह फ़ोल्डर जहाँ बैकअप संग्रहीत हैं
- @Directory_Dat - लॉग फ़ाइलों और डेटाबेस फ़ाइलों को अलग-अलग डिस्क पर रखना सबसे अच्छा है, इसलिए यह वह निर्देशिका है जिस पर आप इसे संग्रहीत करना चाहते हैं
- @Directory_Log - ऊपर के रूप में, अपनी लॉग फ़ाइल के लिए एक अलग निर्देशिका का उपयोग करें
- @Directory_Stand - इसे लॉग शिपिंग को ध्यान में रखकर विकसित किया गया था, इसलिए इसका उपयोग आपके मुख्य डेटाबेस से रिपोर्टिंग डेटाबेस में पुनर्स्थापित करने के लिए किया जा सकता है
SQL
USE [utilities]GOCREATE PROC [maint].RestoreDatabase(@dbname NVARCHAR(100),@Directory_Bak NVARCHAR(100),@Directory_Dat NVARCHAR(100),@Directory_Log NVARCHAR(100),@Directory_Stand BIT) AS BEGINDECLARE @SQL NVARCHAR(MAX)='RESTORE DATABASE ['+@dbname+'] FROM DISK=N'''+@Directory_Bak+''+@dbname+'.bak'' WITH FILE= 1,MOVE N'''+@dbname+''' TO N'''+@Directory_Dat+@dbname+'.mdf'',MOVE N'''+@dbname+'_log'' TO N'''+@Directory_Log+@dbname+'.ldf'',NOUNLOAD, REPLACE, STATS=10'--Standby CodeIF ISNULL(@Directory_Bak,'')<>''SET @SQL=@SQL+',STANDBY=N'''+@Directory_Stand+'ROLLBACK_UNDO_'+@dbname+'.bak'''EXEC master..sp_executesql @SQLENDGO