如何在存储过程中还原备份数据库?且当前数据库正在使用。

解决方案 »

  1.   

    --建立过程
    create proc bak_db
    @dbname varchar(100),
    @path varchar(100)
    as
    declare @strsql varchar(8000)
    set @strsql=''
    select @strsql=@strsql+'kill '+cast(spid as varchar)+char(10)
    from master..sysprocesses
    where dbid<>0  and db_name(dbid)=@dbname
    exec(@strsql)
    --假设还原完整数据库备份
    set @strsql='restore database '+@dbname+' from disk = '''+@path+''''
    exec(@strsql)
    go--调用过程(abc为数据名,abc.bak为备份文件)
    exec bak_db 'abc','D:\SQL Database\Test\abc.bak'--删除测试
    drop proc bak_db