SQL远程恢复

系统 1509 0
原文: SQL远程恢复

-- =============================================
-- 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   
 

 

SQL远程恢复


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论