ALTER      procedure  data_restore(@filenm varchar(100))
as  USE MASTER
  Exec KillSpid--存储过程
  RESTORE DATABASE KM 
  FROM disk=@filenm
我在KM库中的这个存储过程中调用MASTER库中的KillSpid存储过程,这样调用可能不行,请大家帮忙

解决方案 »

  1.   

    ALTER procedure  data_restore(@filenm varchar(100))
    as
      Declare @KillKm varchar(8000)
      Select @KillKm=isnull(@KillKm,'')+'Kill '+rtrim(spid)+char(13) 
       from master.dbo.sysprocesses where dbid=db_id('km')
      Exec(@KillKm) 
      RESTORE DATABASE KM FROM disk=@filenm
    go
      

  2.   

    不行啊,我刚试了,提示这个错误:
    服务器: 消息 6104,级别 16,状态 1,行 1
    不能用 KILL 来取消您自己的进程。
    服务器: 消息 3101,级别 16,状态 1,过程 data_restore,行 13
    因为数据库正在使用,所以未能获得对数据库的排它访问权。
    服务器: 消息 3013,级别 16,状态 1,过程 data_restore,行 13
    RESTORE DATABASE 操作异常终止。