天天看點

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

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

--關閉進階設定

exec sp_configure 'show advanced options',0

END