sql2000数据库备份压缩存储+压缩密码
use master
go
if exists(select * from sysobjects where [type]='FN' and [name]='kymp_时间转字符')
begin
drop function kymp_时间转字符
end
go
create function kymp_时间转字符
(
@date datetime, --时间
@type varchar(10) --类型
)
returns varchar(4)
with encryption
as
begin
declare @retdate varchar(4),@today datetime
set @retdate=''
select @retdate=case rtrim(ltrim(@type)) when 'yy' then
cast(Year(@date) as varchar(4)) --取年份
when 'mm' then --取月份
case when month(@date)>9 then cast(month(@date) as varchar(2))
else '0'+cast(month(@date) as varchar(2)) end
when 'dd' then --取天数
case when day(@date)>9 then cast(day(@date) as varchar(2))
else '0'+cast(day(@date) as varchar(2)) end
when 'hh' then --取小时
case when datepart(hh,@date)>9 then cast(datepart(hh,@date) as varchar(2))
else '0'+cast(datepart(hh,@date) as varchar(2))
end
when 'nn' then --取分
case when datepart(mi,@date)>9 then cast(datepart(mi,@date) as varchar(2))
else '0'+cast(datepart(mi,@date) as varchar(2))
end
when 'ss' then --取秒
case when datepart(ss,@date)>9 then cast(datepart(ss,@date) as varchar(2))
else '0'+cast(datepart(ss,@date) as varchar(2))
end
else
''
end
return @retdate
end
go
--select dbo.kymp_时间转字符(getdate(),'ss')
go
if exists(select * from sysobjects where [type]='P' and [name]='database_backup')
begin
drop procedure database_backup
end
go
CREATE procedure database_backup
@database varchar(1000), --要备份的数据库名称
@database_dir varchar(1000), --备份的目录路径
@israr int, --是否加压 1:压缩,0:不压缩
@ispassword int, --是否加密压缩文件 1:表示加密,0:表示不加密 默认不加密
@password varchar(16), --解压密码
@output varchar(100) output, --返回结果
@outname varchar(1000) output -- 返回备份文件名
-- WITH ENCRYPTION
AS
declare
@datefile nvarchar(1000), -- 备份数据库的全名:数据库名+时间
@bakfile nvarchar(1000), -- 备份文件名 加.bak后缀
@rarfile nvarchar(1000), -- 压缩文件名
@rarcmd nvarchar(1000) -- shell字符命令
select @database as 数据库名称,@database_dir as 备份路径,case @ispassword when 1 then '加密' when 0 then '不加密' end as 是否加密,@password as 压缩密码
/* 对各个参数的判断 */
-- 判断数据库
if (@database is null) or (@database ='')
begin
select @output='备份失败:数据库不能为空'
return
end
-- 判断数据库
---- 判断密码
if @ispassword is null
begin
set @ispassword=0
end
else if @ispassword =1 --- 如果要加密文件,必须给出加密密码
begin
if (@password is null) or (@password ='')
begin
set @output ='备份失败:如果要给压缩的备份文件加密,密码不能为空'
return
end
end
---- 判断密码
---- 判断路径
if (@database_dir is null) or (@database_dir ='')
begin
set @output='备份失败:备份文件路径不能为空'
return
end
---- 判断路径
/* 对各个参数的判断 */
if exists(select * from master.dbo.sysdatabases where [name]=@database)
begin
/* 文件夹路径判断 */
set @rarcmd='dir ' + @database_dir
create table #t([output] varchar(100))
insert into #t exec master.dbo.xp_cmdshell @rarcmd -- 执行cmdshell命令,查找路径并把结果插入#t表
if exists(select * from #t where [output] like '%找不到%')--找不到路径就创建路径
begin
set @rarcmd='md ' + @database_dir
exec master.dbo.xp_cmdshell @rarcmd --- 执行cmdshell命令,创建路径
end
set @rarcmd='dir ' + @database_dir ---- 再次判断文件路径是否创建成功(成功的路径不能在系统路径中)
delete #t
insert into #t exec master.dbo.xp_cmdshell @rarcmd --- 执行命令
if exists(select * from #t -- 备份路径不能在系统路径中
where ([output] like '%找不到%') or ([output] like '%system32%'))
begin
drop table #t
set @output='备份失败:传入的文件夹路径不对'
return
end
drop table #t
/* 文件夹路径判断 */
/* 备份模块 select getdate()*/
--备份文件名 数据库名+系统当前时间+.bak
set @datefile=@database+ '_backup_'+dbo.kymp_时间转字符(getdate(),'yy')+dbo.kymp_时间转字符(getdate(),'mm')+dbo.kymp_时间转字符(getdate(),'dd')
+dbo.kymp_时间转字符(getdate(),'hh')+dbo.kymp_时间转字符(getdate(),'nn')+dbo.kymp_时间转字符(getdate(),'ss')
set @bakfile=@database_dir+@datefile+'.bak'
set @rarfile=@database_dir+''+@datefile+'.rar' --- 压缩的rar文件
BACKUP DataBASE @database TO DISK = @bakfile WITH INIT , NOUNLOAD , NAME = N'HR数据备份', NOSKIP , STATS = 10, NOFORMAT
if @israr=1
begin
if @ispassword = 1 --- rar加密处理
begin
set @rarcmd ='C:/Progra~1/WinRAR/WinRAR.exe a -p'+ @password + ' -df -ep1 '+@rarfile+' '+@bakfile
set @output ='备份成功:已加密压缩备份文件,密码是:'+@password
end
else if @ispassword=0 --- rar不加密处理
begin
set @output ='备份成功:以不加密的方式压缩了备份文件'
set @rarcmd='C:/progra~1/WinRAR/WinRAR.exe a -df -ep1 '+@rarfile+' '+@bakfile
end
/* 备份模块 */
set @outname=@rarfile
exec master.dbo.xp_cmdshell @rarcmd --执行cmdshell命令,压缩备份文件
end
else
begin
set @outname=@bakfile
set @output='不压缩备份了数据'
end
end
else
begin
select @output='备份失败:没有这个数据库'
end
go
declare @rt varchar(100),@name varchar(100),@sql_cmd varchar(1000)
exec database_backup 'web2005','D:/1/',0,1,'2',@rt output,@name output
select @rt as 执行结果,@name as 文件名
--select right(@name,len(@name)-charindex('/',@name))
--set @sql_cmd='exec xp_cmdshell '''+'copy '+@name+' D:/2/'+right(@name,len(@name)-charindex('eedsmis',@name)+1)+''''
--select @sql_cmd
--exec(@sql_cmd)
go
--sp_helptext database_backup
sql2000数据库备份压缩存储+压缩密码相关推荐
- oracle配置并发备份,oracle数据库还原以及备份 包括快速备份(并发压缩)
expdp jhpt/XXXX directory=databackup dumpfile=dpfile_201512091300_%U.dmp filesize=5G parallel=8 comp ...
- 特殊矩阵的压缩存储(对称矩阵,三角矩阵,对角矩阵,稀疏矩阵的顺序,链序存储,十字链表的建立)
特殊矩阵的压缩存储 压缩存储的定义: 若多个数据元素的值都相同,则只分配一个元素值的存储空间,且 零元素不占存储空间. 能够压缩的一些矩阵: 一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等 ...
- sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第二部分
sql还原数据库备份数据库 In this article, we'll walk through, some of the refined list of SQL Server backup-and ...
- Mysql数据库备份和还原
1. 命令备份和还原数据库 1.1命令备份数据 1)备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > ...
- LaZagne检测windows本地存储的密码
LaZagne项目是用于检索存储在本地计算机上的大量密码的开源应用程序. 每个软件使用不同的技术(明文,API,自定义算法,数据库等)存储其密码. 该工具的开发是为了找到最常用的软件的密码. 下载到w ...
- 云计算之路-试用Azure:数据库备份压缩文件在虚拟机上的恢复速度测试
测试环境:Windows Azure上海机房,虚拟机配置为大型(四核,7 GB 内存),磁盘情况见下图. 数据库备份压缩文件大于为12.0 GB (12,914,327,552 bytes),放置于T ...
- mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...
本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...
- Oracle 数据库备份启用压缩以及remap
1. Oracle数据库进行备份恢复 客户测试环境, 有时候需要从现场copy到公司, 压缩虽然能够减少部分空间大小,但是copy到虚拟机里面也时浪费很大量的磁盘,所以能够在备份恢复的过程中执行压缩最 ...
- mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 本文以Linux系统 ...
最新文章
- 如何用XGBoost做时间序列预测?
- 5G人才报告 | 买5G手机不用卖肾,有这个就行(全文)
- 几道有意思的逻辑分析题
- xgboost算法_详解xgboost算法的样本不平衡问题
- 静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
- 临时配置网络(ip,网关,dns)+永久配置
- Spark的实战题目——寻找5亿次访问中,访问次数最多的人
- 动力强劲的星型发动机,为何不用在汽车上呢?
- Win32ASM学习[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD
- 第 5-7 课:Java 中的各种锁和 CAS + 面试题
- 实用调试技巧 Debug Release F10 F11 初始化 越界访问 堆栈 模拟实现库函数
- 常用Keytool 命令
- 5、WPF实现简单计算器-非常适合初学者练习
- 万能打印之Delphi 2010实现(完结)
- 《数学之友》期刊简介及投稿要求
- HTML+CSS+JS实现 ❤️3D旋转魔方图片相册特效❤️
- php安装时候的源是什么,Windows安装源无效怎么办
- iOS微信实现第三方登录的方法
- Python实战案例01
- 利用Python实现NBA球员分析绘制数据可视化图表
热门文章
- 为什么吃完早饭后会犯困(如何度过一个不犯困的上午呢)
- 加盟炸酱面女孩韩式面馆 让你快速拥有一家特色快餐店
- ASEMI代理光宝光耦LTV-5314资料,LTV-5314规格书
- RasDial函数遇到623错误
- 诺基亚301支持java评测_诺基亚301具备强音质+长续航
- The kernel modle installed correctly , but no devices were recognized.
- minigui 时钟
- Android开发冷启动解决方案 实现秒开
- AI观察 | 我国人工智能企业数量达到1500家
- Android TextView autoLink 改变颜色,去掉link下划线