SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Skrip terbaik untuk memulihkan banyak basis data dengan SQL Server 2012?

Skrip Collet dengan beberapa adaptasi berhasil untuk saya.

Pertama-tama aktifkan xp_cmdshell dengan menjalankan perintah SQL berikut:

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

Selanjutnya, perbarui skrip di bawah ini untuk memulihkan basis data dari file cadangan. Ganti C:\Backup\ dengan direktori lokal Anda yang berisi file .BAK Anda dan ganti C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\ dengan direktori data SQL Server Anda. Skrip ini juga mengasumsikan nama file .BAK cocok dengan nama database, jika tidak, skrip kemungkinan akan memunculkan kesalahan tentang nama file logis yang tidak cocok.

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. korban kebuntuan dalam transaksi, bagaimana mengubah prioritas?

  2. Di mana saya dapat memeriksa jenis tabel yang ditentukan pengguna di SQL Server 2008 di SSMS? dan bagaimana saya bisa memasukkan kolom baru ke dalamnya?

  3. Cara mengedit GANDA baris/entri data di SQL Server Management Studio

  4. Klien SQL Server sederhana yang layak

  5. Temukan perbedaan waktu antara dua baris berturut-turut dalam tabel yang sama di sql