SQL Server Express备份和恢复到其他数据库批处理



我正试图从我的实时数据库中外包一些流程,其中第三方工具正在导入数据,这些数据首先必须通过一些脚本/更改才能在实时数据库中实现

所以我想我会在同一台服务器上创建第二个DB,每次我做备份时,我都会在新的DB中恢复备份,其中第三方工具正在导入数据。然后我使用这个数据库对另一个数据库进行一些更改,然后将其更新为活动数据库。

批处理文件:

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

但是当运行脚本时,还原命令抛出以下错误

消息'1834','16',状态'1',服务器'DBServerWAWI',行1
文件' C:Program FilesMicrosoft SQL服务器 MSSQL11。WAWI 该软件 eazybusiness数据。Mdf '不能被覆盖是。它被eazybusiness数据库使用。

Msg '3156', '16', '4'状态,服务器'DBServerWAWI',行1
文件'eazybusiness'不能在' C:Program FilesMicrosoft SQL服务器 MSSQL11。WAWI 该软件 eazybusiness数据。Mdf将被恢复。使用WITH MOVE到文件要识别的有效位置

消息'1834','16',状态'1',服务器'DBServerWAWI',行1
文件' C:Program FilesMicrosoft SQL服务器 MSSQL11。WAWI 该软件 eazybusiness_log数据。ldf"不能被覆盖。它被eazybusiness数据库使用。

Msg '3156', '16', '4'状态,服务器'DBServerWAWI',行1
文件"eazybusiness_log"不能在"C:Program FilesMicrosoft SQL"中服务器 MSSQL11。WAWI 该软件 eazybusiness_log数据。ldf的恢复是。使用WITH MOVE将文件移到一个有效的位置识别。

Msg '3119', '16',状态'1',服务器'DBServerWAWI',行1
在恢复语句的规划中发现问题。前消息包含详细信息。

Msg '3013', '16',状态'1',服务器'DBServerWAWI',行1
RESTORE DATABASE异常停止。选择语音选项用bing搜索这是一个好的翻译这是一个糟糕的翻译

如何通过批处理恢复另一个db中的备份?

您正在使用不同的名称但相同的文件属性恢复备份。由于原始数据库存在,因此您试图覆盖相同的数据库,从而导致失败。您需要使用WITH MOVE语法为每个数据库数据和日志文件指定不同的文件名和/或位置。

请参阅RESTORE文档,特别是"使用BACKUP和RESTORE复制数据库"一节。

示例:

RESTORE DATABASE TestDB 
   FROM AdventureWorksBackups 
   WITH MOVE 'AdventureWorks2012_Data' TO 'C:MySQLServertestdb.mdf',
   MOVE 'AdventureWorks2012_Log' TO 'C:MySQLServertestdb.ldf';
GO

最新更新