1. 删除数据库或者恢复数据库时,一定要先将数据库离线,在执行删除、恢复操作。

SQL代码如下:

 /*使数据库离线*/
ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE /*使数据库重新上线*/
ALTER DATABASE [数据库名] SET online

2. 删除数据库用户时,同样也要将用户帐号的进程给关闭,否则会提示:SQLServer无法删除登录名'***',因为该用户当前正处于登录状态

SQL代码如下:

 /*
要关闭用户帐号进程,必须获取帐号的spid值,通过 kill spid 关停帐号
exec sp_who 可以显示所有数据库帐号的spid
我们筛选想要的spid,就必须通过一个临时数据库,存储exec sp_who结果,这样就可以使用select检索想要的记录 1、定义临时表,存储exec sp_who 结果集
*/
Create Table #tmpTable (spid int,ecid int,status varchar(32),loginname varchar(32),hostname varchar(32),blk int,dbname varchar(32),cmd varchar(32),request_id int) /*2、向临时表写入记录*/
Insert Into #tmpTable EXEC sp_who /*3、定义变量用于循环记录*/
Declare @i Int /*4、 检索指定记录*/
Select @i=Min([spid]) From #tmpTable Where [dbname]='数据库名' And [loginname]='用户帐号' /*5、中止该帐号进程*/
EXEC('kill '+@i)
EXEC('kill '+@i) 时,我们建议采用循环来处理,因为可能
Select @i=Min([spid]) From #tmpTable  Where [dbname]='数据库名' And [loginname]='用户帐号' 的结果不存在,优化代码:
Declare @i Int
Select @i=Min([spid]) From #tmpTable Where [dbname]='数据库名' And [loginname]='用户帐号'
While @i Is Not Null
Begin
EXEC('kill' + @i)
Select @i=Min([spid]) From #tmpTable Where [dbname]='数据库名' And [loginname]='用户帐号' And 1=0
End

效率上来说,用case 更好一些。不过如果针对多个用户,用循环比较好:

Select @i=Min([spid]) From #tmpTable  Where [dbname]='数据库名' And [loginname]='用户帐号' And [spid]>@i

mssql删除数据库、删除帐号错误解决方法的更多相关文章

  1. android6.0SDK 删除HttpClient的相关类的解决方法

    本文转载自博客:http://blog.csdn.net/yangqingqo/article/details/48214865 android6.0SDK中删除HttpClient的相关类的解决方法 ...

  2. MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120)

    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) ***** 解决方法 ...

  3. windows 10 删除库后自动恢复的解决方法

    目录 什么是windows 库? 手动删除不行吗? 如何正确的"删除"? title: windows 10 删除库后自动恢复的解决方法 date: 2019-06-09 15:4 ...

  4. (C#)asp_net调试错误解决方法收集(1)

    (C#)asp_net调试错误解决方法收集(1) 2007-11-2309:20 一.异常详细信息:System.InvalidOperationException:对于不返回任何键列信息的Selec ...

  5. SQL SERVER 9003错误解决方法 只适用于SQL2000

    SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...

  6. GoldenGate 1403错误解决方法

    OGG  oracle goldengate 1403错误解决方法 1. 错误描述WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, re ...

  7. mysql Access denied for user root@localhost错误解决方法总结(转)

    mysql Access denied for user root@localhost错误解决方法总结(转) mysql Access denied for user \'root\'@\'local ...

  8. MongoDB下载+安装+配置+错误解决方法

    下载 官网下载: https://www.mongodb.com/download-center/community Server=>Download 安装 下载完成后安装 建议下载根目录(下过 ...

  9. Eclipse 出现Some sites could not be found. See the error log for more detail.错误 解决方法

    Eclipse 出现Some sites could not be found.  See the error log for more detail.错误 解决方法 Some sites could ...

随机推荐

  1. Python中socket经ssl加密后server开多线程

            前几天手撸Python socket代码,撸完之后经过ssl加密,确保数据的安全,外加server端开启多线程保证一个客户端连接有一个线程来服务客户端,走了不少的弯路,网上的信息啥的要 ...

  2. Jmeter调试脚本之关联

    前言: Jmeter关联和loadrunner关联的区别: 1.在loadrunner中,关联函数是写在要获取变量值的页面的前面,而在就Jmeter中关联函数是要写在获取变量函数值的页面的后面 2.在 ...

  3. ServletRequestLister

    1 知识点

  4. js 大转盘,老虎 机

     http://www.helloweba.com/view-blog-215.htmlhttp://www.ui3g.com/demos/show/1408/http://www.js-css.cn ...

  5. Maven 配置Tomcat

    1.Tomcat conf 下的tomcat-users.xml 增加 <role rolename="manager"/> <role rolename=&qu ...

  6. SSIS教程:创建简单的ETL包 -- 1. 创建项目和基本包

    在本课中,将创建一个简单 ETL 包,该包可以从单个平面文件(Flat File)源中提取数据,使用两个查找转换组件转换该数据,然后将该数据写入AdventureWorksDW2012 的 FactC ...

  7. C#实现Javascript的Splice方法

    最近开始学习Javascript语言,看到splice方法,以下引用其说明:该方法是一个通用删除和插入元素的方法,它可以在数组指定的位置开始删除或插入元素.其包括3个参数:第一个参数指定插入的起始位置 ...

  8. [android] 界面切换的简单动画

    1. 新建个位移动画的xml文件 Activity中开启动画 使用AnimationUtils类加载动画资源文件 left_to_right.xml <?xml version="1. ...

  9. avalon2简单数据绑定(自定义属性绑定)

    <!DOCTYPE html> <html> <head> <title>项目</title> <meta charset=" ...

  10. js中的this--执行上下文

    条件:函数调用的时候  才有执行上下文 this 不同情况的调用,this也不同 1)当函数直接打点调用,此时的this 是window 2)事件触发函数,此时的this是触发这个事件的对象 3)当对 ...