原文:
SQL遠程備份
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
?
-- =============================================
-- Author: dcrenl
-- Create date: 2013-9-5 9:54:46
-- Description: WEB服務器遠程備份數據庫,
--此方法需要打開WEB服務器的共享功能.
--驗證方法同一局域網其它機器里在運行里輸入 \\IP\C$ 要求輸入用戶名和密碼,如果可以訪問此方法有效
--
--異地備份還有很多種方法
--1.將數據庫備份完之后在數據庫服務上創建一個庫,添加表,創建一個Image類型字段,
-- 然后使用sp_textcopy把備份文件寫入數據庫,再從WEB服務器將備份文件讀取出來,不過此方法讀取出來的備份文件有可能會損壞
--2.在WEB服務器安裝SQL Server 使用SQLDMO(Interop.SQLDMO.dll)或
--Microsoft.SqlServer.ConnectionInfo.dll 、 Microsoft.SqlServer.Management.Sdk.Sfc.dll
--(以上兩個DLL文件位置:Program Files\Microsoft SQL Server\100\SDK\Assemblies)
--生成數據庫表、存儲過程和函數等腳本,然后在WEB服務上的SQL Server上創建數據庫,
--使用生成的腳本創建表等,然后將數據Insert到WEB服務器上的數據庫進行備份
-- =============================================
CREATE PROCEDURE [dbo].[RemoteBack]
@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)--需要備份的數據庫名
AS
BEGIN
SET NOCOUNT ON;
--設置日期時間串
DECLARE ?@DateTime DateTime
set @DateTime = getdate()
DECLARE @FileTime nvarchar(max)
set @FileTime = convert(nvarchar(50), year(@DateTime)) + right(cast(month(@DateTime)+100 as varchar),2) + right(cast(day(@DateTime)+100 as varchar),2) + right(cast(DateName(hour,GetDate())+100 as varchar),2) + right(cast(DateName(minute,GetDate())+100 as varchar),2) + right(cast(DateName(second,GetDate())+100 as varchar),2)
?
--打開高級設置
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服務器映射到SQL服務上的路徑
exec('backup database ' + @DataName + ' to disk='''+@DataDisk+':\' + @DataName +'_'+ @FileTime +'.bak'' with init')
?
--關閉映射路徑
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
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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