`

SQL Server中强制关闭数据库连接

阅读更多

1.问题引入

在SQL Server中备份/还原/分离/脱机/删除指定数据库时, 如果有其他用户正在使用此数据库时, SQL Server为了防止数据异常, 会报错而终止你的操作.

   当然, 在SQL 2005/2008里, 在做[分离/删除]数据库时提供了一个选项[关闭所以连接]供勾选(SQL 2000好像没有哦), 然而[备份/还原]操作却没有此选择, 也许你会说可以先[脱机数据库]再做[备份还原]操作, 对, 但你会发现[脱机]处理太慢了J, 那在SQL2005以及SQL 2008下有哪些方法可以解决此问题呢???    

2。解决办法
在这里我只介绍一种使用自己写的存储过程来解决的方案
存储过程代码如下所示:
--关闭用户打开的进程处理 
USE master

go 

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE [dbo].[p_killspid]
go
create   proc   p_killspid 
@dbname   varchar(200) --要关闭进程的数据库名 
as     
declare   @programName     nvarchar(200), 
@spid   nvarchar(20) 

declare   cDblogin   cursor   for 
select   cast(spid   as   varchar(20))  AS spid   from   master..sysprocesses   where   dbid=db_id(@dbname) 
open   cDblogin
fetch   next   from   cDblogin   into   @spid 
while   @@fetch_status=0 
begin    
--防止自己终止自己的进程  
--否则会报错不能用KILL 来终止您自己的进程。   
IF	@spid <> @@SPID
	exec( 'kill   '+@spid) 
fetch   next   from  cDblogin   into   @spid 
end     
close   cDblogin 
deallocate   cDblogin
go 


--用法     
exec   p_killspid     'fdoam'
 参考文章:

http://msdn.microsoft.com/zh-cn/library/ms179881.aspx

 


 

分享到:
评论

相关推荐

    如何强制删除或恢复SQLServer正在使用的数据库

    通常情况睛,SQLServer2000正在使用的数据库(有数据库连接),是不能删除或被恢复的,可以将数据库设置为单用户模式,即可删除: ALTER DATABASE IpaddrDB SET SINGLE_USER with ROLLBACK IMMEDIATE GO DROP...

    SQL数据库的备份和恢复

    体现了SQL Server中的四个知识点: 1. 获取SQL Server服务器上的默认目录 2. 备份SQL语句的使用 3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4. 作业创建SQL语句的使用

    SqlServer强制断开数据库已有连接的方法

    在执行建库脚本时,往往会先将原有的数据库drop掉,由于SqlServer检测到有数据连接时禁止执行drop database操作,所以建库脚本经常执行失败,为此我们需要一种能强制断开数据库已有连接的方法,需要的朋友可以参考下

    SqlServer系列:数据库组成及系统数据库.pdf

    SqlServer系列:数据库组成及系统数据库 系列:数据库组成及系统数据库 1. 数据库组成 数据库组成 数据库的存储结构分为逻辑存储结构和物理存储结构。 逻辑存储结构 :说明数据库是由哪些性质的信息所组成。SQL ...

    网络程序库(1、你是SQL Server 数据库服务器的管理员。一台服务器名为SQL7,另一台叫SQL2000,在SQL7 上运行SQL Server 7.0,在SQL2000上运行着SQL Server 2000................等)

    1、你是SQL Server 数据库服务器的管理员。一台服务器名为SQL7,另一台叫SQL2000,在SQL7 上运行SQL Server 7.0,在SQL2000上运行着SQL Server 2000。SQL2000的网络库配置如下所示:(原题不完整) SQL7的网络库有...

    Microsoft SQL Server 2005 Express Edition SP3

    有关连接到 SQL Server Express 数据库并进行管理的信息,请参阅 Microsoft 知识库文章 907716。 [顶部] 2.4 访问安装文档 SQL Server Express 的安装要求文档中概述了硬件和软件要求。 [顶部] 2.5 SQL Server ...

    强制修改SQLserver2000数据库密码

    强制修改SQLserver2000数据库密码

    alwayson强制恢复数据库

    SQL Server 2014 alwayson高可用数据库强制恢复指导教程

    深入解析SQL Server 2008

    本书全面探讨了sql server 2008的内部工作原理。全书共分为11章,首先在第1章中详细介绍了sql server 2008... 运行dbcc时,sqlserver在内部检查什么  处理多个并发用户时,如何在5个隔离级别和2个并发模型中做出选择

    SQLServer安全及性能优化

    如果不熟悉sqlserver可以使用数据库引擎优化顾问来对数据库提出优化建议,然后通过系统管理的修改达到目的。 数据库引擎优化顾问  数据库引擎优化顾问介绍  分析一个或多个数据库的工作负荷和物理实现,工作负荷...

    SQL_server_2000数据库快照.doc

    分发与复制 用强制订阅实现数据库同步操作 大量和批量的数据可以用数据库的同步机制处理: 说明: 为方便操作,所有操作均在发布服务器(分发服务器)上操作,并使用推模式 在客户机器使用强制订阅方式。

    解析SQL Server7.0的六种数据移动方法

    Bcp工具,这种工具虽然在SQL Server7的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQL Server早期版本的人。Bcp有局限性,首先它的界面不是图形化的,其次它只是在SQL Server的表(视图)与文本...

    sqlserver只有MDF文件恢复数据库的方法

    在查询中执行下列语句 EXEC sp_... 您可能感兴趣的文章:如何强制删除或恢复SQLServer正在使用的数据库sqlserver 数据库日志备份和恢复步骤asp 在线备份与恢复sqlserver数据库的代码SQLserver 数据库危险存储过程删除

    SQL Server 2000数据库的异地备份与强制恢复.pdf

    SQL Server 2000数据库的异地备份与强制恢复.pdf

    SQLServer 附加数据库后出现只读或失败的解决方法

    如果你在附加SQL数据库,出现只读或失败的情况,来看下本文的解决方案吧。

    sqlserver建立新用户及关联数据库教程

    我们经常需要在数据库上建立有权限的用户,该用户只能去操作某个特定的数据库(比如该用户只能去读,去写等等),那么我们应该怎么在sqlserver上设置呢?下面的步骤有点长,只要一步一步跟着设置就行 方法/步骤 如果...

    数据库原理(第5版)

    本书假设学生没有使用过任何特殊的DBMS产品,我们通过Microsoft Access、SQL Server Express版和MySQL来演示数据库概念,使学生可以将这些产品作为工具真正试验书中的内容,而这些概念都是以DBMS无关的方式出现。...

    sql server 2005数据库备份还原图文教程

    首先、点击桌面的“SQL Server Management Studio”打开,sql2005的管理器,点击“连接”登录,如图: 一、新建数据库 1、新建数据库 右键点击“数据库”——“新建数据库”,如图: MSSQL2005备份还原图文教程 ...

Global site tag (gtag.js) - Google Analytics