sql-server
  • backup
  • restore
  • 2013-04-26 145 views 2 likes 
    2

    我需要制作干净的数据库模板备份,然后用另一个名称生成一个新的数据库,但是备份内容。 备份脚本是:将MSSQL数据库备份还原到新数据库

    sqlcmd -S %DB_HOST% -Q "BACKUP DATABASE %DB_NAME% TO DISK = '%BACKUP_FILE%'" 
    

    恢复脚本是:

    sqlcmd -S %DB_HOST% -Q "RESTORE DATABASE %DB_NAME% FROM DISK = '%BACKUP_FILE%' WITH REPLACE" 
    

    而且它的工作原理上相同的数据库名称。 但是,如果我的备份数据库“ORIGINAL_DB_NAME”,然后将其恢复到“NEW_DB_NAME”,它会引发异常:

    Msg 1834, Level 16, State 1, Server <HOST>, Line 1 
    The file '.....\MSSQL\Data\ORIGINAL_DB_NAME.mdf' cannot be overwritten. It is being used by database 'ORIGINAL_DB_NAME'. 
    .... 
    

    回答

    2

    您需要为数据/日志文件指定一个新的位置。

    this MSDN article,例d

    RESTORE DATABASE AdventureWorks2012 
    FROM AdventureWorksBackups 
        WITH NORECOVERY, 
         MOVE 'AdventureWorks2012_Data' TO 
    'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
         MOVE 'AdventureWorks2012_Log' 
    TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf'; 
    RESTORE LOG AdventureWorks2012 
        FROM AdventureWorksBackups 
        WITH RECOVERY; 
    
    +0

    该行'AdventureWorks2012_Data'代表什么?它是数据文件所在的当前目录还是文件名或什么?从代码中不清楚它代表什么 – 2015-02-10 10:25:13

    1

    您也可以使用SSMS避免的难题。在“选项”选项卡下,选择要恢复的源后,将数据和日志文件指向要覆盖的文件,或将它们指向所需的目录并对其进行适当的命名。

    0

    如果你去上的文件恢复配置,确保了原文件名是不一样的还原为,这应该解决您的问题。

    相关问题