Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il modo migliore per copiare un database (SQL Server 2008)

Il modo più semplice è in realtà uno script.

Eseguilo in produzione:

USE MASTER;

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

Questo comando esegue una copia di backup completa del database su un singolo file, senza interferire con la disponibilità della produzione o la pianificazione del backup, ecc.

Per ripristinare, eseguilo sul tuo dev o prova 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

Quindi salva questi script su ciascun server. Comodità con un clic.

Modifica:
se ricevi un errore durante il ripristino che i nomi logici non corrispondono, puoi ottenerli in questo modo:

RESTORE FILELISTONLY
FROM disk = 'C:\temp\MyDatabaseName1.bak'

Se utilizzi gli accessi di SQL Server (non l'autenticazione di Windows) puoi eseguirlo dopo il ripristino ogni volta (sulla macchina di sviluppo/test):

use MyDatabaseName;
sp_change_users_login 'Auto_Fix', 'userloginname', null, 'userpassword';