Best script to restore multiple databases with SQL Server 2012?

前端 未结 5 523
悲&欢浪女
悲&欢浪女 2021-02-06 10:29

I have to restore around 60 SQL databases of different sizes. I googled to find a script to restore all databases after each other , just picking it 1 by 1 from my folder. I was

5条回答
  •  暖寄归人
    2021-02-06 10:56

    Script of Collet with some adaptations worked for me. Be sure to enable xp_cmdshell before.

    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
    

    How to enable 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  
    

提交回复
热议问题