原文:
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 ??
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
