Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Melhor maneira de copiar um banco de dados (SQL Server 2008)


A maneira mais fácil é na verdade um script.

Execute isso na produção:
USE MASTER;

BACKUP DATABASE [MyDatabase]
TO DISK = 'C:\temp\MyDatabase1.bak' -- some writeable folder. 
WITH COPY_ONLY

Este comando faz uma cópia de backup completa do banco de dados em um único arquivo, sem interferir na disponibilidade de produção ou agendamento de backup, etc.

Para restaurar, basta executar isso no seu dev ou testar o SQL Server:
USE MASTER;

RESTORE DATABASE [MyDatabase]
FROM DISK = 'C:\temp\MyDatabase1.bak'
WITH
MOVE 'MyDatabase'   TO 'C:\Sql\MyDatabase.mdf', -- or wherever these live on target
MOVE 'MyDatabase_log'   TO 'C:\Sql\MyDatabase_log.ldf',
REPLACE, RECOVERY

Em seguida, salve esses scripts em cada servidor. Conveniência de um clique.

Editar:
se você receber um erro ao restaurar que os nomes lógicos não correspondem, você pode obtê-los assim:
RESTORE FILELISTONLY
FROM disk = 'C:\temp\MyDatabaseName1.bak'

Se você usar logins do SQL Server (não autenticação do Windows), poderá executá-lo após a restauração a cada vez (na máquina dev/test):
use MyDatabaseName;
sp_change_users_login 'Auto_Fix', 'userloginname', null, 'userpassword';