sqlserver2000中,通过ftp自动远程备份和恢复数据库
2010-07-30 08:29
543 查看
备份原理如下:
首先导出数据库到本地硬盘上,然后压缩成cab文件,之后用ftp.exe将压缩包上传到ftp服务器上
恢复原理如下:
首先在ftp服务器上下载压缩包,然后解压缩里面的文件,最后将数据库备份恢复。
这是备份的源码
这是恢复备份的源码
首先导出数据库到本地硬盘上,然后压缩成cab文件,之后用ftp.exe将压缩包上传到ftp服务器上
恢复原理如下:
首先在ftp服务器上下载压缩包,然后解压缩里面的文件,最后将数据库备份恢复。
这是备份的源码
1 create procedure sp_BackupDB 2 @DBName varchar(50), 3 @Host varchar(255), 4 @User varchar(255), 5 @Password varchar(255), 6 -- @Port int, 7 @WorkingFolder varchar(255), 8 @FileName varchar(255) 9 as 10 begin 11 declare @sTempFileName varchar(255) 12 declare @sCommandText varchar(255) 13 declare @sCabFileName varchar(255) 14 declare @sTempFolder varchar(255) 15 16 set @sTempFolder = '~dbback' 17 --创建临时文件夹 18 set @sCommandText = 'md c:' + @sTempFolder 19 exec xp_cmdshell @sCommandText 20 21 set @sCabFileName = 'c:' + @sTempFolder + '' + @FileName 22 set @sTempFileName = REPLACE(@sCabFileName,'.zpck','.dbak') 23 24 --删除可能存在的的临时文件 25 set @sCommandText = 'del "' + @sTempFileName +'"' 26 exec xp_cmdshell @sCommandText 27 28 set @sCommandText = 'del "' + @sCabFileName +'"' 29 exec xp_cmdshell @sCommandText 30 31 --备份数据库 32 BACKUP DATABASE @DBName TO DISK = @sTempFileName 33 --set @sCommandText = 'BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @sTempFileName + '''' 34 --execute(@sCommandText) 35 36 --将数据库压缩成数据包 37 exec xp_makecab @sCabFileName, 'mszip', 1 , @sTempFileName 38 39 declare @ftpLogScriptFileName varchar(255) 40 set @ftpLogScriptFileName = '"' + REPLACE(@sCabFileName,'.zpck','.log') + '"' 41 --产生ftp上传脚本 42 set @sCommandText = 'echo ftp>' + @ftpLogScriptFileName 43 exec xp_cmdshell @sCommandText 44 set @sCommandText = 'echo open ' + @Host + '>>' + @ftpLogScriptFileName 45 exec xp_cmdshell @sCommandText 46 set @sCommandText = 'echo ' + @User + '>>' + @ftpLogScriptFileName 47 exec xp_cmdshell @sCommandText 48 set @sCommandText = 'echo ' + @Password + '>>' + @ftpLogScriptFileName 49 exec xp_cmdshell @sCommandText 50 set @sCommandText = 'echo cd ' + @WorkingFolder + '>>' + @ftpLogScriptFileName 51 exec xp_cmdshell @sCommandText 52 set @sCommandText = 'echo put "' + @sCabFileName + '">>' + @ftpLogScriptFileName 53 exec xp_cmdshell @sCommandText 54 set @sCommandText = 'echo bye >>' + @ftpLogScriptFileName 55 exec xp_cmdshell @sCommandText 56 57 --上传数据包 58 set @sCommandText = 'ftp -s:"' + @ftpLogScriptFileName + '"' 59 exec xp_cmdshell @sCommandText 60 61 --删除数据库压缩包 62 set @sCommandText = 'del "' + @sCabFileName + '"' 63 exec xp_cmdshell @sCommandText 64 65 --删除ftp上传脚本 66 set @sCommandText = 'del "' + @ftpLogScriptFileName + '"' 67 exec xp_cmdshell @sCommandText 68 69 70 --删除数据库备份 71 set @sCommandText = 'del "' + @sTempFileName + '"' 72 exec xp_cmdshell @sCommandText 73 74 --删除临时文件夹 75 set @sCommandText = 'rd c:' + @sTempFolder 76 exec xp_cmdshell @sCommandText 77 78 return 79 end |
create procedure sp_RestoreDB @DBName varchar(50), @Host varchar(255), @User varchar(255), @Password varchar(255), @WorkingFolder varchar(255), @FileName varchar(255), @MDFPhyFileName varchar(255), @MDFLogFileName varchar(255), @LDFPhyFileName varchar(255), @LDFLogFileName varchar(255), @ReturnValue int output as begin set @ReturnValue = -1 declare @sTempFileName varchar(255) declare @sCommandText varchar(255) declare @sCabFileName varchar(255) declare @sUnpackFolder varchar(255) declare @sTempFolder varchar(255) -- set @MDFPhyFileName = 'C:Program FilesMicrosoft SQL ServerMSSQLDataSuStorageMgr.mdf' -- set @MDFLogFileName = 'SuStorageMgr_Data' -- set @LDFPhyFileName = 'C:Program FilesMicrosoft SQL ServerMSSQLDataSuStorageMgr_log.ldf' -- set @LDFLogFileName = 'SuStorageMgr_Log' set @sTempFolder = '~dbback' set @sCabFileName = 'c:' + @sTempFolder + '' + @FileName set @sTempFileName = REPLACE(@sCabFileName,'.zpck','.dbak') set @sCommandText = 'md ' + 'c:' + @sTempFolder exec xp_cmdshell @sCommandText --删除可能存在的的临时文件 set @sCommandText = 'del "' + @sTempFileName + '"' exec xp_cmdshell @sCommandText declare @ftpLogScriptFileName varchar(255) set @ftpLogScriptFileName = REPLACE(@sCabFileName,'.zpck','.log') --产生ftp下载脚本 set @sCommandText = 'echo ftp>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo open ' + @Host + ' >>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo ' + @User + '>>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo ' + @Password + '>>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo cd ' + @WorkingFolder + '>>"' <;/span>+ @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo get ' + @FileName + ' ' + @sCabFileName + '>>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText set @sCommandText = 'echo bye >>"' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText --下载数据包 set @sCommandText = 'ftp -s:' + @ftpLogScriptFileName exec xp_cmdshell @sCommandText --删除ftp下载脚本 set @sCommandText = 'del "' + @ftpLogScriptFileName + '"' exec xp_cmdshell @sCommandText --压缩包解压缩 set @sUnpackFolder = 'c:' + @sTempFolder exec xp_unpackcab @sCabFileName, @sUnpackFolder, 1 --删除数据库压缩包 set @sCommandText = 'del "' + @sCabFileName + '"' exec xp_cmdshell @sCommandText --还原数据库 RESTORE DATABASE @DBName FROM disk = @sTempFileName WITH RECOVERY, REPLACE, MOVE @MDFLogFileName to @MDFPhyFileName, MOVE @LDFLogFileName to @LDFPhyFileName --删除数据库备份 set @sCommandText = 'del "' + @sTempFileName + '"' exec xp_cmdshell @sCommandText --删除临时目录 set @sCommandText = 'rd ' + 'c:' + @sTempFolder exec xp_cmdshell @sCommandText set @ReturnValue = 1 return end |
相关文章推荐
- 一个sqlserver2000中,通过ftp自动远程备份和恢复数据库的例子
- sqlserver2000中,通过ftp自动远程备份和恢复数据库的例子
- SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
- linux自动备份文件和数据库并上传到指定的远程FTP中
- 自动备份数据库并通过bat 实现自动上传到ftp服务器
- SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
- centos 安装 mysql + 中文乱码 + 远程登录 + 数据库备份和恢复
- Linux通过脚本实现远程自动备份
- Linux通过脚本实现远程自动备份
- 通过作业自动备份sql server 2005数据库
- 【12c】12c RMAN新特性之通过网络远程恢复数据库(RESTORE/Recover from Service)
- Linux自动每日备份文件和数据库上传FTP空间
- SAE 平台代码实现数据库定时备份以及同步到本地 2014/09/11 09:39:01 分类: 技术随笔 1人评论 次浏览 SAE 只允许用户通过phpMyAdmin管理远程数据库,
- linux上mysql远程备份和自动导入到指定数据库的shell脚本
- sql server中通过查询分析器实现数据库的备份与恢复方法分享
- 一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册
- Windows下通过FTP自动备份数据到服务器并删除指定天数前的备份
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- SQL2005恢复只有mdf文件的数据库 自动备份数据
- mysqlhotcopy 通过ftp方式异地备份数据库