`
xinklabi
  • 浏览: 1587084 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

还原数据库出错:”因为数据库正在使用,所以无法获得对数据库的独占访问权“的解决方案

 
阅读更多

还原数据库出错:”因为数据库正在使用,所以无法获得对数据库的独占访问权“的解决方案

在备份还原数据库时遇到的问题 以bizidea为例:

backup database bizidea to disk='d:/bizideabackup' ---数据备份没问题
restore database bizidea from disk='d:/bizideabackup' ----在还原数据的时候就会提示

消息 3201,级别 16,状态 2,第 1 行
无法打开备份设备 'd:/bizideabackup'。出现操作
系统错误 2(系统找不到指定的文件。)。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 正在异常终止。

在网上看了以下解决方法

{ 在还原数据库时,有时会提示因为数据库正在使用,所以无法获得对数据库的独占访问权!!
这时需要在还原数据库前先杀死正在使用数据库得线程.

该解决方案用到了系统表中的sysprocesses ,若要访问 sysprocesses,您必须定位到master 数据库。

如以下杀死正在使用'bizidea'数据库的线程:
use master
declare @dbname varchar(20)
set @dbname='bizidea'

declare @sql nvarchar(500)
declare @spid int--SPID 值是当
用户进行连接时指派给该连接的一个唯一的整数
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1--如果FETCH 语句
没有执行失败或此行不在结果集中。
begin
exec('kill '+@spid)--终止
正常连接
fetch next from getspid into @spid
end
close getspid
deallocate getspid

}

但是如果这样做了在执行 restore database bizidea from disk='d:/bizideabackup' 进行还原是就会提示一下错误:

消息 3159,级别 16,状态 1,第 1 行
尚未备份数据库 "bizidea" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 正在异常终止。

sql2005 还原时出现下面的错误,System.Data.SqlClient.SqlError: 尚未备份数据库 "****" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。 (Microsoft.SqlServer.Smo)

原因分析
这是因为
在线还原的数据库在最后备份后又产生了新的日志,所以按照默认设置的备份选项,系统将提示备份日志尾部以免造成事务中断。
解决方法
如果需要备份尾部日志则进行备份。如果不需要,则可以在还原数据库的的选项卡中
选择【覆盖现有数据库】复选框。

如果想使用命令进行操作则输入以下命令即可:

RESTORE DATABASE [BizIdea] FROM DISK = N'd:/bizideabackup' WITH FILE = 4, NOUNLOAD, REPLACE, STATS = 10
GO

分享到:
评论

相关推荐

    还原sqlserver2008数据提示:因为数据库正在使用,所以无法获得对数据库的独占访问权.docx

    对于SQL Server 2008而言,当进行数据库还原操作时可能会遇到一个常见的错误提示:“因为数据库正在使用,所以无法获得对数据库的独占访问权”。本文将针对这一问题进行深入分析,并提供有效的解决方案。 #### 一、...

    解决用smo还原数据库时,设备独占不能还原

    还原数据库时,提示因为数据库正在使用,无法获得对数据库的独占访问权!

    sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法

    这通常是由于有用户或后台进程正在连接到要还原的数据库,导致无法获取独占访问权,从而无法完成还原操作。以下是一些解决此类问题的方法: 1. **关闭所有连接**: 解决这个问题的基本思路是确保在还原操作期间...

    无法还原,现有数据库正在使用

    ### 无法还原,现有数据库正在使用的解决方案 在数据库管理与维护的过程中,经常会遇到因为数据库正在被使用而导致无法执行还原操作的情况。这种情况对于数据库管理员来说是一个常见的挑战,尤其是在需要紧急恢复...

    SQL server 2008数据库的备份与还原

    在尝试还原数据库时,可能会遇到“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误提示。 **解决方案步骤:** 1. **设置数据库模式:** - 右键单击目标数据库,在弹出的菜单中选择“属性”。 - ...

    SQL2008数据库-备份与还原.doc

    - **问题描述:** 在还原数据库时可能会遇到“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误消息。 - **解决方案:** 1. **设置数据库为单用户模式:** - 右键点击需要还原的数据库,选择“属性...

    SQL数据库的备份与还原、分离与附加.doc

    解决方案:在还原数据库时,可能会遇到“因为数据库正在使用,所以无法获得对数据库的独占访问权”的问题。解决方案是右键点击数据库名称,选择“属性”,在“数据库属性”对话框中,选择“选项”,在“其他选项”下...

    SQL Server 2005 数据库恢复:MDF文件

    10. **执行恢复命令**:使用以下SQL命令序列恢复数据库: - `ALTER DATABASE @dbname SET EMERGENCY`: 设置为紧急模式。 - `ALTER DATABASE @dbname SET SINGLE_USER`: 将数据库设置为单用户模式,允许进行独占...

    SQL 数据库备份以及还原.docx

    如果在还原数据库过程中遇到“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误,可以采取以下步骤: 1. 右键点击目标数据库,选择“属性”。 2. 在“数据库属性”对话框中,选择“选项”页签。 3. ...

    Sysbase数据库备份恢复步骤

    然而,如果在还原过程中,数据库报告当前正在被其他用户使用,这时我们需要调整数据库的状态。使用`sp_dboption`存储过程,可以将数据库设置为单用户模式。命令如下:`sp_dboption dbname, "single user", true`,...

    SQL数据库置疑解决方案(原因、预防、修复)附图

    - 防火墙或防病毒软件在扫描过程中可能会锁定数据库文件,导致SQL Server无法获取对文件的独占访问权限,从而标记数据库为置疑状态。 5. **SQL Server启动时文件被其他程序占用或遗失** - 当SQL Server试图启动时...

    杀死正在使用数据库的线程.pdf

    在SQL Server中,数据库的管理和维护是至关重要的任务,尤其是当遇到无法正常操作的情况,例如在尝试还原数据库时出现“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误。这个问题通常是因为有其他...

    Net数据库备份与还原

    描述中的“因为数据库正在使用,所以未能获得对数据库的排它访问权的问题”是常见的数据库备份挑战。在SQL Server中,如果一个数据库处于联机状态并被应用程序使用,那么它可能无法进行备份,因为它需要独占访问权限...

    sql Server 2008 R2还原或删除数据库时总是出错的解决方法

    然而,有时在执行这些操作时,可能会遇到一些问题,比如“数据库正在使用,所以无法获得对数据库的独占访问权”这样的错误提示。这种错误通常发生在数据库处于打开状态,而用户试图进行数据库的还原或删除操作时,...

    修改数据库最大连接数以及linux系统下ORACLE数据库启动多实例参照.pdf

    数据库最大连接数修改与 Oracle 多实例启动在 Linux 系统下 一、修改 Oracle 数据库允许的最大连接数 Oracle 数据库的最大连接数可以通过...3. shutdown abort:直接关闭数据库,正在访问数据库的会话会被突然终止。

Global site tag (gtag.js) - Google Analytics