
我需要另一个名称下的数据库的精确副本。我选择使用 SQL Mgt Studio 2008 通过备份-恢复克隆 SQL 数据库。首先,在恢复数据库时,我收到一个错误。
SqlError: The backup set holds a backup of a database other than the existing 'Pro_SSRS' database. (Microsoft.SqlServer.Smo)
然后我发现我必须选择“覆盖现有数据库”选项,可以在各个站点上看到,例如这里: http://www.nikhedonia.com/notebook/entry/solving-the-sql-server-restoring-database-error/
现在,我在数据库名称旁边看到“(正在恢复...)”,这已经过去了半个小时。我甚至无法查看数据库的属性,大多数选项都显示“不可用”。
有人能解释一下吗?或者这是正常的吗?(数据库大约 20MB..)提前谢谢!
答案1
您要做的是删除所有这些并按照以下步骤操作:
创建数据库的完整备份,确保选中“备份后验证”以确保 BAK 正常。将其命名为 ORIGINAL.BAK。记住它的位置。(您也可以使用“T-SQL”)
将数据库“YourDBName”备份到磁盘 = 'C:\ORIGINAL.BAK'; // 或类似
现在返回 Management Studio,右键单击数据库,然后单击“恢复数据库...”
在出现的对话框中,恢复目标:到数据库:MyNewDatabase
在里面恢复源,选择“从设备”,然后单击[…]按钮。
一个新的弹出窗口(微软的弹出窗口是怎么回事?),将备份媒体保留为“文件”,但单击添加按钮并找到您的 ORIGINAL.BAK。如果您使用 Management Studio 备份,则可能位于同一位置。选择它并单击“确定”。然后再次单击“确定”。
现在返回第一个恢复屏幕,单击“选择要恢复的备份集”框中的复选框(恢复)(您的数据库应该列在那里)。先不要单击“确定”!
现在,在这个弹出窗口的左侧,有一个列表框,上面写着:选择一个页面。还有两个“页面”:常规和选项。点击选项。
单击覆盖现有数据库。
在“将数据库文件还原为”中,确保 .mdf 和 .ldf 不与其他文件冲突。您可以根据需要更改其位置。
单击确定。您的数据库 20mb 应该在 10 秒内恢复。
如果这不起作用怎么办?
偶尔你可能会遇到问题。这通常不是一个好兆头,你应该运行 DBCC CHECKDB(阅读帮助文件以了解更多相关信息)以确保你的主数据库正常。
您也可以尝试直接“附加”数据库:
- 暂停 SQL Server(以确保没有人使用数据库,不知道是否有必要但...)
- 右键单击数据库(在 Management STudio 中),并选择附加,然后选择添加。
- 找到您想要复制的数据库的 .MDF,单击“确定”,然后在“数据库详细信息”(添加按钮下方)上检查并更改当前文件路径和/或重命名 .MDF 和 .LDF(不能与其他数据库相同)。
- 单击“确定”。
笔记:如果这不起作用,您可能需要先 DEATACH 原始数据库。执行 4 个步骤,然后重命名数据库。然后继续重新连接原始数据库。
希望这可以帮助。
答案2
您的问题是,在使用新数据库名称进行恢复时,您需要为所有数据文件指定新的文件位置。如果您在 T-SQL 中执行此操作,则称为 WITH MOVE。将具有不同名称的数据库恢复到同一位置是没有意义的。您需要为文件指定新的位置/名称。
您的数据库似乎在恢复过程中崩溃了。查看活动监视器,看看是否有任何恢复发生(或系统进程),可能没有。如果是这种情况,那么您应该能够删除(DROP)数据库并重新启动。
答案3
另一个选项是您可以对数据库进行快照。这会是即时的,但仅提供数据库的静态只读副本(通常用于报告)。
仅适用于企业版。