SSMS
 sql >> डेटाबेस >  >> Database Tools >> SSMS

SQL सर्वर 2012 के साथ कई डेटाबेस को पुनर्स्थापित करने के लिए सर्वश्रेष्ठ स्क्रिप्ट?

कुछ रूपांतरणों के साथ कोलेट की स्क्रिप्ट ने मेरे लिए काम किया।

पहले निम्न SQL कमांड चलाकर xp_cmdshell सक्षम करें:

-- To allow advanced options to be changed.  
EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO 

इसके बाद, बैकअप फ़ाइलों से डेटाबेस को पुनर्स्थापित करने के लिए नीचे दी गई स्क्रिप्ट को अपडेट करें। C:\Backup\ बदलें आपकी स्थानीय निर्देशिका के साथ आपकी .BAK फ़ाइलें और प्रतिस्थापित करें C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\ अपने SQL सर्वर डेटा निर्देशिका के साथ। यह स्क्रिप्ट यह भी मानती है कि .BAK फ़ाइल नाम डेटाबेस नामों से मेल खाते हैं, अन्यथा स्क्रिप्ट तार्किक फ़ाइल नामों से मेल न खाने के बारे में त्रुटियों को फेंक देगी।

DECLARE @FilesCmdshell TABLE (
    outputCmd NVARCHAR (255)
)   
DECLARE @FilesCmdshellCursor CURSOR 
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)

INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell 'dir /B  C:\Backup\*.bak'    
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell

OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN   
    DECLARE @sqlRestore NVARCHAR(MAX) = 'RESTORE DATABASE [' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '] FROM  DISK = N''C:\Backup\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '.bak'' WITH  FILE = 1,  MOVE N''' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + ''' TO N''C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '.mdf'',  MOVE N''' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '_log'' TO N''C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '_log.ldf'', NOUNLOAD,  STATS = 10'
    EXEC(@sqlRestore)

    FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. मैं चयनित तालिका से शीर्ष 1000* का चयन करने के लिए कीबोर्ड शॉर्टकट कैसे प्रोग्राम कर सकता हूं?

  2. SSMS - SQL Azure v12 पूर्वावलोकन - अज्ञात गुण IsNativelyCompiled

  3. Sql सर्वर प्रबंधन स्टूडियो में हेडर के साथ परिणाम सहेजना

  4. SQL सर्वर 'के लिए' के ​​पास गलत सिंटैक्स

  5. SSMS से dbForge Studio में आसानी से कैसे स्विच करें