常用的情形是在部署测试数据库时需要通过SQL代码自动重新创建数据库,在删除的时候往往会发生错误,错误信息一般会指出目前有用户连接到这个数据库上,因此不能删除.

实现的方式是通过查询指定数据库中活跃的 SPID, 然后一一删除.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO USE MASTER
GO IF OBJECT_ID('dbo.USP_KillSPID','P')IS NOT NULL
DROP PROCEDURE dbo.USP_KillSPID
GO CREATE PROCEDURE dbo.USP_KillSPID
@DatabaseName VARCHAR(255)
AS DECLARE @SPID NVARCHAR(255)
DECLARE curDBLogin CURSOR FOR
SELECT CAST(SPID AS VARCHAR(255)) AS SPID
FROM MASTER..sysprocesses
WHERE dbid = DB_ID(@DatabaseName) OPEN curDBLogin
FETCH NEXT FROM curDBLogin INTO @SPID WHILE @@FETCH_STATUS = 0
BEGIN
IF @SPID <> @@SPID
EXEC('KILL '+ @SPID )
FETCH NEXT FROM curDBLogin INTO @SPID
END CLOSE curDBLogin
DEALLOCATE curDBLogin
GO -- Kill logins of database
EXEC dbo.USP_KillSPID 'CommonControlDB' -- Drop itself
DROP PROCEDURE dbo.USP_KillSPID

SQL Server 中断开连接到指定数据库的所有连接的更多相关文章

  1. SQL Server中,如何查看每个数据库的Owner是哪个SQL Server账户,也就是谁创建的

    有时候我们作为SQL Server的DBA,会需要查找每个数据库的Owner是哪个SQL Server账户,也就是谁创建的. 我们可以使用系统存储过程"sys.sp_helpdb" ...

  2. sql server 中不同服务器上的数据库中表怎么互导数据

    --创建一个链接 EXEC sp_addlinkedserver 'OtherServerDb','','SQLOLEDB','192.168.12.101' --第一个参数是给远程的服务器起的别名 ...

  3. Sql Server 中由数字转换为指定长度的字符串

    一个列的数据类型是 int ,从 1 开始自动增长,另一个列是字符串,现在想把 int 列转换成 九个字符,比如 1 转换后就是 000000001 ,添到字符串列,怎么实现呢? set @imaxU ...

  4. SQL Server如何附加只有mdf的数据库文件

    有时候SQL Server意外断电会导致SQL Server的ldf日志文件丢失或者损坏,这个时候你如果直接附加mdf文件到SQL Server会失败,这里提供一个方法可以还原只有mdf的数据库文件, ...

  5. SQL Server 中的 ACID 属性

    SQL Server 中的事务是什么? SQL Server 中的事务是一组被视为一个单元的 SQL 语句,它们按照"做所有事或不做任何事"的原则执行,成功的事务必须通过 ACID ...

  6. SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb。

    (1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息.这些系统信息包括所有的登录信息.系统设置信息.SQL Server的初始化信息和其他系 ...

  7. sql server中使用链接服务器访问oracle数据库

    一.  安装配置oracle客户端 要访问orcale数据,必须在访问的客户端机器上安装oracle客户端. Orcale有两种形式的客户端: l         完整的客户端 包括访问服务器端数据库 ...

  8. SQL Server中数据库文件的存放方式,文件和文件组

    原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html   SQL Server中数据库文件的存放方式,文件和文件组 ...

  9. SQL Server中内连接和外连接的区别

    SQL Server中内连接和外连接的区别 假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联. 如果用内连接,正常的 ...

随机推荐

  1. 关于websocket集群中不同服务器的用户间通讯问题

    最近将应用部署到集群时遇到一个问题,即用户命中不同的服务器导致的用户间无法进行websocket通讯,在网上搜索到类似问题但都没有具体解决方案. 于是用redis的订阅发布功能解决了该问题,具体流程如 ...

  2. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  3. 对于多个button要在同一个监听器中实现自己的单击事件的方法小诀窍。

    在网上的一些教程中往往是把一个button加入多个监听器,却非常少有人会把多个button在同一个监听器中去实现他们的单击事件,并且这杨的事实上是非常有用的,比方说在制作一个简单的计算器是就须要0-9 ...

  4. C#里,如何模拟DataGridView里的一个Cell的Click事件。

    //假设dgv是一个DataGridView. //我要点击第3行的第二个cell. //当然,要有一个点击事件.假设dgv_CellClick是那个点击事件. dgv_CellClick(dgv,  ...

  5. Easyui layout设置满屏效果

    html文件: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  6. dockerfile介绍

    详细说明,阅读这篇文章吧:https://yeasy.gitbooks.io/docker_practice/image/build.html 注意点: 容器是一个进程,不是一个系统 dockerfi ...

  7. Inferred type 'S' for type parameter 'S' is not within its bound; should extend

    在使用springboot 方法报错: Inferred type 'S' for type parameter 'S' is not within its bound; should extends ...

  8. 【已解决】Android微信开放平台,申请移动应用的 应用签名 如何获取

    在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&a ...

  9. OpenCV教程(46) 快速特征检测

        在计算harris特征角时候,我们要在两个方向计算梯度,计算代价有点大.在paper The article by E. Rosten and T. Drummond, Machine lea ...

  10. Java IO流关闭问题的深入研究

    转自:https://blog.csdn.net/maxwell_nc/article/details/49151005 前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记 ...