SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Najlepszy skrypt do przywracania wielu baz danych z SQL Server 2012?

Scenariusz Collet z kilkoma adaptacjami zadziałał dla mnie.

Najpierw włącz xp_cmdshell, uruchamiając następujące polecenia SQL:

-- 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 

Następnie zaktualizuj poniższy skrypt, aby przywrócić bazy danych z plików kopii zapasowej. Zastąp C:\Backup\ z lokalnym katalogiem zawierającym pliki .BAK i zastąp C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\ z twoim katalogiem danych programu SQL Server. Ten skrypt zakłada również, że nazwy plików .BAK pasują do nazw baz danych, w przeciwnym razie skrypt prawdopodobnie wyrzuci błędy dotyczące niezgodnych logicznych nazw plików.

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. Studio zarządzania SQL Server, jak automatycznie kapitalizować

  2. Nieprawidłowa nazwa obiektu — procedura składowana

  3. SQL Server Management Studio:znaczenie ikony

  4. Zależności kluczy obcych programu Microsoft SQL Server są wyświetlane przy użyciu sp_MSdependencies, ale nie są wymienione w sys.foreign_keys

  5. Zmiany schematu nie są aktualizowane w Intellisense w SQL 2008 (SSMS)