好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

sqlserver远程异地备份(ftp方式传送)

sqlserver 远程异地备份 问题描述 客户的 sqlserver 数据库服务器每日凌晨自动备份 T1 数据库,现在要求同时将备份文件自动上传到一台存储服务器(有 FTPSERVER )上 解决方案 1. 开发一个 window 服务程序每日凌晨将本机(数据库服务器)的备份文件以 FTP

sqlserver 远程异地备份

问题描述

客户的 sqlserver 数据库服务器每日凌晨自动备份 T1 数据库,现在要求同时将备份文件自动上传到一台存储服务器(有 FTPSERVER )上

解决方案

1. 开发一个 window 服务程序每日凌晨将本机(数据库服务器)的备份文件以 FTP 方式上传到存储服务器上

2. 利用 sqlserver 的 xp_cmdshell 工具调用 FTP 命令将备份文件上传到存储服务器上

具体方法

第一种方案不再描述

第二种方案实现如下

1. 确认存储服务器 FTP 服务可用,确认用户名秘密

2. 使用以下 SQL 代码打开 xp_cmdshell 使用权限( sqlserver 2005 默认关闭)

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

3. 在 sqlserver 数据库服务器 C:\dbbackup\ 下创建 FTP 脚步文件 ftpconfig.txt 内容如下,第一行用户名第二行秘密,如果匿名第一行 anonymous 第二行空行

123
123
put C:\dbbackup\*.tempBAK
close
quit

4. 在 sqlserver 数据库查询分析器测试以下 SQL 代码,假设数据库名 testdb 备份位置 C:\dbbackup 存储服务器 IP 192.168.0.44


declare @tempfilename varchar(100)
set @tempfilename= CONVERT(varchar(8), GETDATE(), 112)+ CONVERT(varchar(2), DatePart (Hour,GETDATE()))+ CONVERT(varchar(2), DatePart (Minute,GETDATE())) + CONVERT(varchar(2), DatePart (second,GETDATE()))
print @tempfilename
declare @tempfilename1 varchar(100)
set @tempfilename1=' C:\dbbackup \testdb'+ @tempfilename +'.tempBAK'
backup database testdb TO DISK = @tempfilename1
EXEC xp_cmdshell 'ftp -s:c:\dbbackup\ftpconfig.txt 192.168.0.44 ' –anonymous
declare @temp varchar(100)
set @temp='ren C:\dbbackup\testdb'+ @tempfilename +'.tempBAK '+'testdb'+ @tempfilename +'.BAK'
print @temp
EXEC xp_cmdshell @temp

5. 在 sqlserver 数据库上建立维护计划,定时自动执行第四部分 SQL

查看更多关于sqlserver远程异地备份(ftp方式传送)的详细内容...

  阅读:48次