zoukankan      html  css  js  c++  java
  • 分离当前正在使用的数据库

    下面是断开指定数据库的所有用户连接的一个过程(在master数据库中进行)

    //创建要分离的数据库的连接的存储过程
      use   master 
      go  
      if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[sp_KillSpid]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)         //判断master数据库中是否已经存在该存储过程
      drop   procedure   [dbo].[sp_KillSpid]    //若存在则删除该存储过程
      GO    
      create   proc   sp_KillSpid    //创建存储过程
      @dbname   sysname     --要断开连接的数据库名 
      as     
      declare   @s   nvarchar(1000) 
      declare   tb   cursor   local   for    //定义游标
      select   N'kill   '+cast(spid   as   varchar) 
      from   master..sysprocesses   
      where   dbid=db_id(@dbname) 
      
      open   tb      //打开游标
      fetch   next   from   tb   into   @s    //填充数据
      while   @@fetch_status=0    //判断游标的状态
      begin 
      exec(@s)    //执行动态的sql语句
      fetch   next   from   tb   into   @s    //填充下一条记录
      end 
      close   tb    //关闭游标
      deallocate   tb    //释放游标
      go 
      
      --调用删除要分离的数据库的连接的存储过程
      exec   sp_KillSpid     'aa'

    ----调用分离数据库的存储过程

    exec sp_detach_db '要分离的数据库的名称'

    注解: a.定义游标的语法: declare 游标名称 cursor for 查询的sql语句

        b. 游标的状态:

          有五种状态分别对应的值和含义:

             1:状态为1,表示游标的结果至少有一条记录;

             2:状态为0表示游标的结果集为空;

             3:状态为-1表示游标已关闭;

             4:状态为-2表示未将该游标分配给以标明的变量;

             5:状态为-3表示该游标不存在;

  • 相关阅读:
    在 AutoLayout 和 Masonry 中使用动画
    在 AutoLayout 和 Masonry 中使用动画
    Linux shell基础(五)sed命令
    Linux shell基础(五)sed命令
    Linux shell基础(五)sed命令
    Linux shell基础(五)sed命令
    直击高考人机大战:技术、争议与人族胜利
    直击高考人机大战:技术、争议与人族胜利
    直击高考人机大战:技术、争议与人族胜利
    JAVA面试精选【Java基础第一部分】
  • 原文地址:https://www.cnblogs.com/erpNet/p/2629823.html
Copyright © 2011-2022 走看看