您的位置:首页 > 博客中心 > 数据库 >

SQL远程恢复

时间:2022-03-14 02:23

原文:

-- ============================================= -- Author: dcrenl -- Create date: 2013-9-5 14:08:35 -- Description: WEB服务器远程恢复数据库,远程恢复和远程备份的思路是一样的。 --不过恢复的时候有个释放连接的问题,所以多加了一个释放连接的存储过程。 --本来可以整合到一个里面但是考虑到其它地方也会用到释放连接所以把它单独拿出来了。 -- ============================================= ALTER PROCEDURE [dbo].[RemoteRestore] @DataDisk nvarchar(max),--需要在数据库服务器上映射的盘符 @WEBAddr nvarchar(max),--WEB服务器地址 @WEBDisk nvarchar(max),--WEB服务器共享目录(例如:D$ 或 C$\Windows) @Password nvarchar(max),--WEB服务器密码 @UserName nvarchar(max),--WEB服务器用户名 @DataName nvarchar(max),--需要恢复的数据库名 @BackName nvarchar(max)--需要恢复的数据库名 AS BEGIN SET NOCOUNT ON;   --打开高级设置 exec sp_configure ‘show advanced options‘,1 reconfigure --开启xp_cmdshell exec sp_configure ‘xp_cmdshell‘,1 reconfigure --将WEB服务器路径映射到数据库服务器 exec (‘master..xp_cmdshell ‘‘net use ‘ + @DataDisk + ‘: \\‘ + @WEBAddr + ‘\‘ + @WEBDisk + ‘ "‘ + @Password + ‘" /user:‘ + @WEBAddr + ‘\‘ + @UserName + ‘‘‘‘) --开始备份并复制到WEB服务器的映射路径 declare  @DataBaseName varchar(50) set @DataBaseName = ‘KF_Reg_‘ + @BackName exec p_killspid @DataBaseName exec (‘RESTORE DATABASE [‘ + @DataName + ‘] FROM DISK = N‘‘‘+@DataDisk+‘:\‘ +@BackName+‘.bak‘‘ WITH REPLACE‘) --关闭映射路径 exec (‘master..xp_cmdshell ‘‘net use ‘ + @DataDisk + ‘: /delete‘‘‘) --关闭xp_cmdshell exec sp_configure ‘xp_cmdshell‘,0 reconfigure --关闭高级设置 exec sp_configure ‘show advanced options‘,0 reconfigure END     -------------------------------------------------------------------------------------------------     --断开所有用户连接的存储过和 ALTER proc [dbo].[p_killspid] (@dbname varchar(100))    as    begin    declare @sql nvarchar(500)    declare @spid int    set @sql=‘declare getspid cursor for     select spid from master.sys.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     

 

热门排行

今日推荐

热门手游