2015-08-25 2 views
0

Je tente d'externaliser certains processus à partir de ma base de données active lorsqu'un outil tiers importe des données qui doivent d'abord exécuter des scripts/modifications en raison de leur qualité avant d'être implémentées en direct DBSauvegarde et restauration de SQL Server Express vers un autre lot de base de données

J'ai donc pensé créer un deuxième DB dans le même serveur et sauvegarder mon lot de sauvegarde. Chaque fois que je fais une sauvegarde, je restaure la sauvegarde dans la nouvelle base de données où l'outil tiers importe les données. Ensuite, j'utilise cette base de données pour effectuer des modifications sur une autre base de données, que je mets ensuite à jour dans la base de données dynamique.

fichier batch:

osql.exe -S (local)\WAWI -U user -P password -Q "BACKUP DATABASE eazybusiness TO DISK = 'c:\WaWi-Backups\eazybusiness.bak'" 
osql.exe -S (local)\WAWI -U user -P password -d master -Q "restore database Mandant_2 FROM DISK ='c:\WaWi-Backups\eazybusiness.bak' with replace" 

Mais lors de l'exécution du script, la commande de restauration est de lancer l'erreur suivante

Msg '1834', '16', état '1', serveur ' DBServer \ WAWI ', ligne 1
Le fichier' C: \ Program Files \ Microsoft SQL Server \ MSSQL11. WAWI \ MSSQL \ DATA \ eazybusiness.mdf 'ne peut pas être écrasé be. Il est utilisé par la base de données eazybusiness.

Msg '3156', '16', '4' état, serveur 'DBServer \ WAWI', ligne 1
Le fichier 'EazyBusiness' ne peut pas dans "C: \ Program Files \ Microsoft SQL Server \ MSSQL11 . WAWI \ MSSQL \ DATA \ eazybusiness.mdf 'être restauré. Utilisez WITH MOVE vers un emplacement valide pour l'identification du fichier.

Msg '1834', '16', état '1', serveur 'DBServer \ WAWI', ligne 1
Le fichier 'C: \ Program Files \ Microsoft SQL Server \ MSSQL11. WAWI \ MSSQL \ DATA \ eazybusiness_log.ldf 'ne peut pas être être remplacé. Il est utilisé par la base de données eazybusiness.

Msg '3156', '16', '4' état, serveur 'DBServer \ WAWI', ligne 1
Le fichier 'eazybusiness_log' ne peut pas être dans "C: \ Program Files \ Microsoft SQL Server \ MSSQL11 . WAWI \ MSSQL \ DATA \ eazybusiness_log.ldf 'restauré être. Utilisez WITH MOVE à un emplacement valide pour le fichier à identifier. Msg '3119', '16', état '1', serveur 'DBServer \ WAWI', ligne 1
Des problèmes ont été détectés dans la planification de l'instruction de restauration. Précédente Les messages contiennent des informations détaillées.

Msg '3013', '16', l'état '1', le serveur 'DBServer \ WAWI', ligne 1
RESTORE DATABASE est arrêté anormalement. SpeakSelect options vocalesRechercher cette traduction avec BingC'est une bonne traductionC'est une mauvaise traduction.

Comment puis-je restaurer la sauvegarde dans une autre base de données via un lot?

Répondre

1

Vous restaurez la sauvegarde en utilisant un nom différent, mais les mêmes propriétés de fichier. puisque la base de données d'origine existe, vous essayez d'écraser la même base de données, ce qui provoque l'échec. Vous devez spécifier un nom de fichier et/ou un emplacement différent pour chaque donnée de base de données et fichier journal, en utilisant la syntaxe WITH MOVE.

Voir la documentation RESTORE, en particulier la section "Copie d'une base de données à l'aide de BACKUP et RESTORE".

Exemple:

RESTORE DATABASE TestDB 
    FROM AdventureWorksBackups 
    WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf', 
    MOVE 'AdventureWorks2012_Log' TO 'C:\MySQLServer\testdb.ldf'; 
GO 
+0

avec la commande move je déplace les journaux de ma base de données principale ou le nom des journaux enregistrés dans le fichier restauré? – veritaS