Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)

一.Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)

本次测试使用数据库实例SqlServer2008r2版

错误详细:

1
2
3
4
5
6
标题: Microsoft SQL Server Management Studio
------------------------------
还原数据库“Mvc_HNHZ”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
其他信息:
System.Data.SqlClient.SqlError: 因为数据库正在使用,所以无法获得对数据库的独占访问权。 (Microsoft.SqlServer.SmoExtended)

  

 

原因分析:

在SqlServer2008r2中在还原数据库时,在执行备份操作的时候,如果有正在访问的用户或者没有关闭的数据库链接,则还原失败。

 

二、解决方案

解决方案1.

如果你使用管理工具还原数据库并且在Microsoft SQL Server Management Studio 2016或以上版本的话,可以在还原的时候勾选"关闭到目标数据库的现有链接"

 

 

解决方案2:

如果你的SqlServer Management Studio的版本比较低,可以设置数据库为单用户模式,执行完还原操作后,恢复为多用户模式

设置方式:选中要还原的数据库-->属性-->选项-->限制访问
该值从MULTI_USER修改为SINGLE_USER,此时该数据库就会显示为单用户模式
这是GUI的模式,语句的办法比较简单

---设置数据库为单用户模式 USE MASTER GO ALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO
---设置数据库为多用户模式 USE MASTER GO ALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE; GO

解决方案3:

完全使用T-Sql的方式,执行备份数据库操作

use master go ---声明变量 declare @dbName nvarchar(max)='Mvc_HNHZ'; declare @dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak'; --1.1修改为单用模式 exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'); --1.2结束链接进程 DECLARE @kid varchar(max) SET @kid='' SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses WHERE dbid=DB_ID(@dbName) ; EXEC(@kid) ; --2.执行还原语句 restore database @dbName from disk=@dbFullName with replace --覆盖现有的数据库 --3.重置数据库为多用户模式 exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');

__EOF__

本文作者Ray
本文链接https://www.cnblogs.com/Rui6/p/17615560.html
关于博主:分享、记录日常遇到的问题合集!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   大白菜!  阅读(1623)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
历史上的今天:
2022-08-08 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "客户端无法建立
2022-08-08 SQL server 2008链接服务器OLE DB 访问接口 "SQLNCLI10" 返回了消息 "未指定的错误"
点击右上角即可分享
微信分享提示