1.当数据库已经建好在DB里,SQL Server 2005 和 SQL Server 2008使用.Bak文件还原的时候,会出现 error : "The backup set holds a backup of a database other than the existing" 查了网上的方法:
方法一[未验证]
[sql] view plaincopy --返回由备份集内包含的数据库和日志文件列表组成的结果集。
--主要获得逻辑文件名
- --返回由备份集内包含的数据库和日志文件列表组成的结果集。
- --主要获得逻辑文件名
- USE master
- RESTORE FILELISTONLY
- FROM DISK = 'g:\back.Bak'
- Go
- --**********************************
- /*
- 利用bak恢复数据库,强制还原(REPLACE)
- STATS = 10 每完成10%显示一条记录
- DBTest和DBTest_log是上面g:\back.Bak里的逻辑文件
- */
- USE master
- RESTORE DATABASE DB
- FROM DISK = 'g:\back.Bak'
- WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DB.mdf',
- MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DB_log.ldf',
- STATS = 10, REPLACE
- GO
- -------------------------------------
- /*
- 备份数据DB 到.bak文件。然后利用此bak文件恢复一个新的数据库DBTest。
- */
- USE master
- BACKUP DATABASE DB
- TO DISK = 'g:\DBBack0930.bak'
- RESTORE FILELISTONLY
- FROM DISK = 'g:\DBBack0930.bak'
- RESTORE DATABASE DBTest
- FROM DISK = 'g:\DBBack0930.bak'
- WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest.mdf',
- MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest_log.ldf'
- GO
- ---******************************
方法二[验证过,不行] 需要注意两点: 在【选项】界面里 1.选择“覆盖现有数据库” 2.修改【将数据库文件还原为】区域里的【还原为】的位置,和要恢复的数据库的实际位置保持一致
方法三[验证过,可行] 1.先删掉需要还原的数据库,右键【服务器】下的【数据库】,选择【还原数据库】,键入新的目标数据库名; 2.在【选项】里,选择覆盖数据库; 3.执行就ok了。
2.Microsoft SQL Server还原失败,错误: 3219
MSSQL还原数据库失败,提示如下: 还原对与服务器 失败。(Microsoft.SqlServer.Smo)
其它信息:执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionsInfo)。不能选择文件或文件组“……”用于此操作。 RESTORE DATABASE 正在异常终止。(Microsoft SQL Server, 错误:3219)
出现此错误时我的操作步骤为:右击数据库》》任务》》还原》》文件和文件组》》源设备(选择备份文件)》》指定备份文件位置》》添加选定文件。在“还原文件和文件组”对话框中点击“确定”按钮,即出现上面显示的错误。
正确的步骤为:右击数据库》》任务》》还原》》数据库》》源设备(选择备份文件)》》指定备份文件位置》》添加选定文件。在“还原数据库”对话框中点击“确定”按钮,即可正确还原。
主要原因: 文件和文件组备份必须被还原到匹配的数据库
还原文件和文件组备份 SQL Server 的说明的详细信息可见: http://support.microsoft.com/kb/281122/zh-cn
至于“还原数据库”和“还原文件和文件组”的区别可以见此文章:http://www.cnblogs.com/zping/archive/2008/08/21/1272961.html
==================================================================================================
在此简单说明下,我不是用于还原已存在数据库,而是创建新数据库,与上面操作不同的只是:不是指定某个数据库后右键》任务》……,而是数据库上一级【数据库】右键》还原数据库(注意:不是还原文件和文件组)……。