要求:
1.可对同一台机的的同一数据可有多个库进和恢复。
2.一台机的数据备分可到另一台机恢复,且数据库路径很可能不一样
3.有连接正在用要恢复的数据库时,应断开所有的连接,进行恢复。怎样断开连接,是一问题。
4.恢复的数据库文件对用户透明

解决方案 »

  1.   

    --Kill所有现有与要还原数据库(并非服务器,不用担心别的库的联接,不会出问题)的联接,再还原
    use master
    declare @spid int,@str varchar(100),@dbid int,@dbname varchar(255)
    set @dbname='yl2004'  --Replace with you Database Name,try it
    select @dbid=dbid from master.dbo.sysdatabases WHERE name = @dbname
    declare cur_spid cursor local for
       select spid from master.dbo.sysprocesses where dbid=@dbid
    open cur_spid 
    fetch from cur_spid into @spid
    while @@fetch_status=0 
    begin
      set @str='kill '+Cast(@spid as varchar(10))
      exec(@str)
      fetch from cur_spid into @spid
    end
    close cur_spid
    deallocate cur_spid再还原数据库用Restore Database,详情查阅SQLSERVER在线手册,
    相信大多数据还原失败的问题都在于无法Kill目标数据库的联接。结分吧。