在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!
The backup set holds a backup of a database other than the existing 'AAA' database.
RESTORE DATABASE is terminating abnormally. (Microsoft SQL Server,错误: 3154)
解决方法一:
--返回由备份集内包含的数据库和日志文件列表组成的结果集。
--主要获得逻辑文件名
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.修改【将数据库文件还原为】区域里的【还原为】的位置,和要恢复的数据库的实际位置保持一致(实际操作该步骤可选)
=====================================================
SqlServer2005 恢复数据库时出现:
Exclusive access could not be obtained because the database is in use
由于恢复数据库时需要对数据库进行独占的访问,在恢复之前你必须中止其他用户与数据库的连接。
可能的解决方法:
在恢复数据库前:
方法一.打开Management Studio.
点击数据库右键--》restart database
方法二.执行如下的Query:
Use Master
Alter Database [YOURDB]
SET SINGLE_USER With ROLLBACK IMMEDIATE
在恢复数据库后如果需要恢复会普通多用户模式:
Use master;
Go
Alter Database [YOURDB]
SET MULTI_USER
Go
方法三
获取当前使用数据库用户链接,关闭连接
use master
go
sp_who(sp_who2)
go
得到相应spid,通过kill spid关闭连接
use master
go
kill @spid
go
ALTER DATABASE 命令的部分参数:
l SINGLE_USER | RESTRICTED_USER | MULTI_USER:控制哪些用户可以访问数据库。如果指定为 SINGLE_USER,那么同一时间只能有一个用户访问数据库。如果指定为 RESTRICTED_USER,那么只有 db_owner、dbcreator 或 sysadmin 角色的成员可以使用数据库。MULTI_USER 使数据库返回到正常操作状态。
l WITH <termination>:指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定下一条 termination 子句,而且该子句应跟在 SET 子句后面。
ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination 子句,那么将允许事务自主提交或回滚。
l NO_WAIT:指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。
----------------------------------------------------------------------------------------------------------------------------------------------
解决SQL Server 2005 还原数据库错误:System.Data.SqlClient.SqlError: 在对 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\BusinessDB.mdf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问)',如图:
原因分析:
没有对"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\"创建文件的权限(可以把它复制到data),这是SQL2005对文件夹的安全性限制。
修改文件夹到'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\”或其他盘的文件夹下(如E:\mydb)即可。注意:mdf文件和ldf文件的路径都要修改。如图: