Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Meilleure façon de copier une base de données (SQL Server 2008)

Le moyen le plus simple est en fait un script.

Exécutez ceci en production :

USE MASTER;

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

Cette seule commande effectue une copie de sauvegarde complète de la base de données sur un seul fichier, sans interférer avec la disponibilité de la production ou le calendrier de sauvegarde, etc.

Pour restaurer, exécutez simplement ceci sur votre dev ou testez 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

Enregistrez ensuite ces scripts sur chaque serveur. Commodité en un clic.

Modifier :
si vous obtenez une erreur lors de la restauration indiquant que les noms logiques ne correspondent pas, vous pouvez les obtenir comme ceci :

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

Si vous utilisez des connexions SQL Server (et non l'authentification Windows), vous pouvez l'exécuter après chaque restauration (sur la machine de développement/test) :

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