如何利用SQL2008 实现远程备份

      【网页编程】 2009-2-20 9:42
第一步:映射网络硬盘

--exec   master..xp_cmdshell   'net   use   Q:   \\共享文件夹   "密码"   /user:IP用户名'  --映射网络硬盘

--exec   master..xp_cmdshell   'net   use   Q:   /delete' --删除网络硬盘

第二步 :写存储过程

CREATE PROCEDURE [nikko_backup] AS

declare

@prefix nvarchar(100),

@datefile nvarchar(100),

@datefile1 nvarchar(100),

@bakfile nvarchar(100),

@rarfile nvarchar(100),

@rarfile1 nvarchar(100),

@delcmd nvarchar(100),

@delcmd1 nvarchar(100),

@copycmd nvarchar(100),

@rarcmd nvarchar(150)

set @prefix='D:\BACKUP\' --备份文件夹

set @datefile='aa_db_'+replace(replace(replace(convert(varchar(16),getdate(),120),'-',''),' ',''),':','') --按时间取得文件名称用于备份

set @datefile1='aa_db_'+replace(replace(replace(convert(varchar(16),getdate()-3,120),'-',''),' ',''),':','') --按时间取得文件名称用于删除

set @bakfile=@prefix+@datefile+'.bak'

set @rarfile='D:\aa_rar\'+@datefile+'.rar'

set @rarfile1='D:\aa_rar\'+@datefile1+'.rar' --删除3天前压缩路径

BACKUP DataBASE  aa TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'aa', NOSKIP , STATS = 10, NOFORMAT --备份数据库

set @rarcmd ='C:\Progra~1\WinRAR\WinRAR.exe a -k -r -s -ibck '+@rarfile+' '+@bakfile --进行加密压缩

exec master..xp_cmdshell @rarcmd

set @delcmd = 'del '+@prefix+ '*.bak'   --删除原始文件

exec master..xp_cmdshell @delcmd

set @copycmd='copy '+@rarfile+' '+ 'Q:\aa_bak_rar\' -- 设定备份路径

exec master..xp_cmdshell  @copycmd       --copy压缩文件进行备份

set @delcmd1 = 'del '+@rarfile1+''   --删除备份文件

exec master..xp_cmdshell  @delcmd1
GO

注:以上可以自动备份SQL2000 数据库同时还可以进行压缩,转移到网络硬盘,同时删除3天前的本地备份,实现通过SQL自动备份。

第三步: 设定作业进行自动备份(通过调度)

以上就可以完全通过SQL实现自动备份

标签集:TAGS:实现远程备份
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}