Backup e restauração de todos os bancos de dados e usuários do SQL Server

2

Existe uma maneira de fazer backup e restaurar todo o SQL Server em um único comando (bancos de dados, dados e usuários)? Consegui isso com sucesso com o servidor MySql, mas só consigo encontrar exemplos de exportações de banco de dados único para o SQL Server.

    
por LiamB 31.01.2015 / 12:58

1 resposta

2

Para roubar uma das minhas próprias respostas :) usei com êxito esse script para migrar centenas de bancos de dados. (Este script requer conectividade de rede entre os servidores.)

@ECHO ON

set controlfile=control.txt
set oldserver=
set oldmdfpath=
set newmdfpath=
set newserver=
set oldlogpath=
set newlogpath=
set movedmdfpath=
set movedldfpath=

SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (%controlfile%%) DO (
  SET "line=%%L"
  SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO !line!
  sqlcmd -E -S!oldserver! -Q"EXEC master.dbo.sp_detach_db @dbname = N'!line!'"
  copy "!oldmdfpath!\!line!.mdf" !newmdfpath!
  copy "!oldlogpath!\!line!_log.ldf" !newlogpath!
  sqlcmd -E -S!newserver! -Q"CREATE DATABASE [!line!] ON ( FILENAME = N'!newmdfpath!\!line!.mdf' ),( FILENAME = N'!newlogpath!\!line!_log.ldf' ) FOR ATTACH"
  move "!oldmdfpath!\!line!.mdf" !movedmdfpath!
  move "!oldlogpath!\!line!_log.ldf" !movedldfpath!
  ENDLOCAL
)
ENDLOCAL

(O arquivo control.txt contém uma lista dos bancos de dados a serem movidos. Você pode obtê-los via select name from sys.databases where name not in ('master','msdb','model','tempdb') .)

Backup / restore é o método mais seguro, mas o destacamento / anexação é muito mais rápido quando você obtém um grande número de bancos de dados.

Você terá que lidar com logins (e possíveis problemas secundários) separadamente. Este link pode ajudar. Os links de Ditto JoeQwerty acima.

    
por 01.02.2015 / 02:53

Tags