zoukankan      html  css  js  c++  java
  • SQL排他锁的解决方案

     

    SQL排他锁的解决方案

    分类: 事务与锁 数据库管理维护 680人阅读 评论(0) 收藏 举报

    问题描述: 
    我有一个数据库叫做inOutSell 

    已经备份到D:/mydatabase.bak 
    现在的情况是我要用sql语句进行还原 
    语句如下: 

    USE inOutSell 
    RESTORE DATABASE inOutSell 
    FROM DISK = 'D:/mydatabase.bak' 
    WITH REPLACE 
    GO 

    可是出现了如下的问题 
    查询分析器报告如下: 

    服务器: 消息 3101,级别 16,状态 1,行 2 
    因为数据库正在使用,所以未能获得对数据库的排它访问权。 
    服务器: 消息 3013,级别 16,状态 1,行 2 
    RESTORE DATABASE 操作异常终止。 


    现在求解决方案 要求运用sql语句

    create   proc   killspid     (@dbname    varchar(20))      
     
    as      
     
    begin      
      
    declare  @sql   nvarchar(500)      
      
    declare  @spid  int      
      
    set  @sql='declare  getspid  cursor  for          
                       select  spid  from sysprocesses where dbid=db_id(
    '''+@dbname+''')'      
      
    exec  (@sql)      
      
    open  getspid      
      
    fetch  next  from getspid into @spid      
      
    while @@fetch_status  <>-1      
          
    begin      
              
    exec('kill  '+@spid)      
             
    fetch  next  from getspid  into  @spid      
          
    end      
      
    close  getspid      
      
    deallocate  getspid      
      
    end      
       
      
    --用法      
      use  master      
      
    exec  killspid  '数据库名' 

  • 相关阅读:
    290. Word Pattern
    283. Move Zeroes
    278. First Bad Version
    276. Paint Fence
    270. Closest Binary Search Tree Value
    [jobdu]二进制中1的个数
    [jobdu]丑数
    Skip List
    [wikioi]没有上司的舞会
    POJ3984 迷宫问题
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3341044.html
Copyright © 2011-2022 走看看