`

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...

    navicatepremuim连接sqlserver数据库遇到问题及解决方法

    Navicat Premium 连接 SQL Server 数据库遇到问题及解决方法 Navicat Premium 是一个功能强大且功能丰富的数据库管理工具,支持多种数据库管理系统,包括 SQL Server、MySQL、Oracle 等。但是在使用 Navicat ...

    解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包

    当SQLSERVER数据库驱动程序遇到无法通过安全套接字层(SSL)加密与SQL Server建立安全连接的问题时,通常涉及到证书配置、驱动版本兼容性、Java安全策略或者缺少必要的库文件等问题。以下是一些解决此类问题的知识点...

    SQLServer数据库的备份和还原详解

    1. 在SQL Server Management Studio中打开目标数据库,从右键菜单中选择“所有任务 -&gt; 备份数据库”。 2. 选择“完全备份”模式,然后在“备份到”列表框中删除现有内容并添加新的备份目的地。 3. 在弹出的“选择...

    Microsoft SQL Server中的星形连接查询优化

    总结来说,在Microsoft SQL Server中优化星形连接查询,不仅需要数据库管理员对SQL Server的内部工作机制有深入的理解,还需要灵活运用各种技术手段,如索引优化、查询计划调整、内存管理等,来实现数据性能的最大化...

    在SQL Server中还原不存在的数据库

    在SQL Server中,数据库的还原是一项关键操作,特别是在你需要恢复数据、迁移数据库或者从备份文件中重建数据库的情况下。以下是一个详细的步骤指南,教你如何在SQL Server中还原一个不存在的数据库。 首先,假设你...

    MyEclipse(Java)连接SQLServer 2008 R2 失败n次的经验.pdf

    通过上述步骤,您可以成功地在MyEclipse中连接至SQL Server 2008 R2。在整个过程中可能会遇到各种问题,比如连接失败、驱动无法识别等,此时需要仔细检查每个步骤是否正确执行,并确保所有配置信息无误。如果仍然...

    SQL数据库的备份和恢复

    在SQL Server中,数据库的备份和恢复是至关重要的任务,确保数据的安全性和可恢复性。以下四个关键知识点将深入探讨这一主题: 1. 获取SQL Server服务器上的默认目录: SQL Server提供了一个内置函数`dbo.f_...

    用sql语句由excel表往sqlserver数据库表中导数据

    在日常工作中,经常需要处理不同格式的数据文件,例如将Excel表格中的数据导入到SQL Server数据库中。本文将详细介绍如何使用SQL语句实现这一操作。 #### 一、环境配置与准备工作 1. **安装必要的驱动程序**: - ...

    MyEclipse连接sql_server_2008和连接sql_server_2008

    创建数据源是为了方便后续在 Java 程序中连接数据库。 **步骤1:** 在控制面板 -&gt; 管理工具 -&gt; 数据源 (ODBC) 中,选择“系统 DSN”选项卡。 **步骤2:** 点击“添加”,选择 SQL Server 驱动程序。 **步骤3:** ...

    sqlserver内存释放

    SQL Server 是一款高性能的关系型数据库管理系统,在处理大量数据时能够实现高效的查询响应时间。为了提高性能,SQL Server 会尽可能地利用系统可用内存来进行数据缓存。这种内存管理策略虽然有助于提升查询效率,但...

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

    在SQL Server中,当需要对一个数据库进行删除(DROP DATABASE)操作时,如果该数据库还有活动的连接或会话,SQL Server将不允许执行这个操作,因为这可能导致数据丢失或者破坏正在进行的事务。为了确保建库脚本能够...

    从SQL Server备份文件导入现存数据库

    从 SQL Server 备份文件导入现存数据库需要通过创建临时数据库,恢复备份文件,并将数据导入到目标数据库中。这个过程需要谨慎执行,以免出现数据丢失或损坏的情况。 知识点: * 如何从 SQL Server 备份文件导入...

    SQL Server 2005更改数据库的登录用户名与访问权限

    本文将深入解析如何在SQL Server 2005中更改数据库的登录用户名与调整访问权限,以提升数据库的安全性和管理效率。 ### SQL Server 2005中的登录用户与权限管理 #### 1. **创建新的登录名以增强安全性** 默认情况...

    Sql_server_2005数据库的附加和分离

    - 在“分离数据库”对话框中,勾选“删除连接”选项,这将强制断开所有对数据库的连接。 - 点击“确定”,系统会开始分离数据库。分离完成后,数据库将不再出现在服务器的数据库列表中,但其数据文件和日志文件仍...

    SQL Server 2005数据库电子教材

    在SQL Server 2005中,通过DDL触发器和DML触发器,可以实现对数据完整性和业务规则的强制。学习如何创建、修改和删除触发器,以及如何避免触发器滥用导致的性能问题至关重要。 3. **权限管理**: 权限管理是SQL ...

    SQLServer数据库基础教程及习题 ppt doc

    在SQL Server中,可以使用CREATE TABLE语句来创建数据库表,定义字段名、数据类型和约束条件。ALTER TABLE语句用于修改已有表的结构,而DROP TABLE则用于删除不再需要的表。表间关系可通过FOREIGN KEY约束实现。 四...

    数据库应用技术SQL Server 2005

    SQL Server 2005是微软公司推出的一款关系型数据库管理系统,它在IT行业中广泛应用于数据存储、数据处理和数据分析。本资料旨在帮助学习者深入理解SQL Server 2005的基础概念、功能特性以及实际操作技巧,以提升在...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...

Global site tag (gtag.js) - Google Analytics