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

问题分析:数据库还原的时候还有其他进程连在上面,导致无法获得独占造成的。

解决方案:
一、切断连接进程
1.查询要还原的数据库ID
Select * from master..sysdatabases where name = '';
2.获取该数据库的进程
Select * from sys.sysprocesses a where a.dbid = '';
3.杀掉连接在上面的进程
kill @spid;
此时去还原一般就可以了 二、
将当前需要还原的数据进行OFFLINE,还原后,再将该数据库ONLINE。
脚本如下,先运行第一脚本,还原成功后,运行第二脚本。 1)ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE
2)ALTER DATABASE [datebase] SET ONLINE WITH ROLLBACK IMMEDIATE 如果此时还原还是不行。可能是删完进程马上有新的进程连进来,
导致一直失败。应用程序一直不停的进行数据库链接。
这时,可以在单用户下还原。 三、删完进程马上有新的进程连进来,导致一直失败。
单用户模式
单用户模式设置:
右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问(MULTI_USER 默认) -> 选择Single-> 确定。然后还原。 或 GUI的模式,语句的办法比较简单
USE MASTER
GO
ALTER DATABASE 数据库名字 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
设置单用户数据库必须要超级用户
四、
-- 首先定位到master数据库
use master
go
declare @dbname varchar(20)
set @dbname='dbtest' ---这是数据库名称
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   

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

  1. SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数据库的独占访问权

    如果已经设置为单用户模式,还是报这个错误的话,就按照一下SQL执行就

  2. SQL Server还原和一些小发现

    1.当数据库已经建好在DB里,SQL Server 2005 和 SQL Server 2008使用.Bak文件还原的时候,会出现 error : "The backup set holds ...

  3. [SQL SERVER] - 还原数据库备份(SQL脚本),抛出 "System.OutOfMemoryException" 异常之解决

    背景 在 Microsoft SQL Server 2016 的查询窗体中,直接还原备份数据库的 SQL 脚本(99MB),抛出 Cannot execute script 异常: 原因 相关资料说: ...

  4. SQL Server安全(7/11):使用跨数据库所有权链接(Cross-Database Ownership Chaining)的跨数据库安全

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  5. Sql Server之使用T_SQL创建,修改,查看数据库信息

    一.使用Transact_SQL创建数据库 Transact_SQL语法如下:  create database database_name   [ on     [primary]  [<fi ...

  6. 报错:此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容

    在Visual Studio 2012中使用Entity Framework,根据模型生成数据库时,报如下错误: 无法在自定义编辑器中打开Transact-SQL文件此版本的SQL Server Da ...

  7. 【常见的SQL Server连接失败错误以及解决方法】

    [常见的SQL Server连接失败错误以及解决方法] http://blog.csdn.net/feixianxxx/article/details/5523922 ADO连接SQL Server ...

  8. SQL Server ->> 重新创建Assembly和自动重建相关的数据库编程对象(存储过程,函数和触发器)

    在SQL Server中,一旦一个Assembly被其他的数据库编程对象(存储过程,函数和触发器)引用了,这个Assembly就不能被删除.但是问题是,在SQL Server要更新一个Assembly ...

  9. Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法

    SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...

随机推荐

  1. 有关fallback diffuse unity的神奇的事情

    fallback diffuse 导致tris面片增加 double了 等于又画了一遍 很奇怪(只有一台机器是这样的) 这事情真坑我跟到最后 在一个最简测试场景 fallback diffuse替换成 ...

  2. non-compatible bean definition of same name and class

    在整合struts2.1.6+spring2.5.6开发中,使用了注解和struts-convention来实现零配置管理.spring也使用注解annotation方式.现在的问题是:我在连个个不同 ...

  3. testform

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. CentOS下安装实时检測网络带宽的小工具bmon

    首先下载rpmforge-release扩展的rpm包 32位操作系统:wget http://www.sudu.us/Tools/bmon/rpmforge-release-0.3.6-1.el5. ...

  5. linux phpredisAdmin安装步骤

    1:linux安装apache环境, 这一步可以不用安装plsql http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html 2 ...

  6. 初学spring(一)

    1.spring 在ssh 中所处的位置 struts 是web框架(jsp,action,actionform) hibernate 是orm框架,处于数据持久层 spring 是容器框架,配置be ...

  7. cadence原理图和PCB互联显示成功但是不能高亮和database

    问题现象:cadence原理图和PCB互联显示成功但是不能高亮我的问题 解决:尝试修复数据库试试,Tools->Database check 提醒:有一个封装非法命名,在原理图中修改后 再次保存 ...

  8. 编译安装git

    http://zhaohe162.blog.163.com/blog/static/38216797201472185321661/

  9. Java(Android)解析KML文件

    參考自:http://blog.csdn.net/yyywyr/article/details/38359049 http://blog.csdn.net/warrenwyf/article/deta ...

  10. Atitit.嵌入式web 服务器 java android最佳实践

    Atitit.嵌入式web 服务器 java android最佳实践 1. Android4.4.21 2. 自己的webserver1 3. CyberHTTP for Java  cybergar ...