2 sql-server-2008 sql-server sql-server-2008-r2
我有一个数据库,我想仅通过命令行将其从一个位置复制到另一个位置(甚至可能复制到另一台计算机)。新位置上的数据库名称不应与原始名称相同。
我尝试了以下命令,但在尝试恢复数据库时失败:
备份:
sqlcmd -E -S MyUser\SQLEXPRESS -Q "BACKUP DATABASE original_db TO DISK='C:\tmp\backups\base_db.bak'"
Run Code Online (Sandbox Code Playgroud)
恢复:
sqlcmd -E -S MyUser\SQLEXPRESS -Q "RESTORE DATABASE new_test_db FROM DISK='C:\tmp\backups\base_db.bak'
with move 'original_db' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\new_test_db.mdf',
move 'original_db' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\new_test_db.ldf'"
Run Code Online (Sandbox Code Playgroud)
当我尝试恢复数据库时,我收到以下错误:“备份集保存了一个数据库的备份,而不是现有的‘new_test_db’数据库。”
(当我的数据库不存在时,我在还原时遇到以下错误 - “逻辑文件 'original_db' 不是数据库 'new_test_db' 的一部分。使用 RESTORE FILELISTONLY 列出逻辑文件名。”)
任何想法如何正确地做到这一点?
谢谢您的帮助。
在WITH MOVE 'logical_file_name_in_backup'引用此文件,而不是数据库名称的内部名称。
运行这个看看我的意思。您正在查看名称列
SELECT * FROM sys.database_files
Run Code Online (Sandbox Code Playgroud)
编辑:
WITH REPLACE现在需要...查看上面的第一个链接并查找
数据库名称与备份集中记录的数据库名称不同。
| 归档时间: |
|
| 查看次数: |
18287 次 |
| 最近记录: |