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数据库备份压缩存储+压缩密码相关推荐

  1. oracle配置并发备份,oracle数据库还原以及备份 包括快速备份(并发压缩)

    expdp jhpt/XXXX directory=databackup dumpfile=dpfile_201512091300_%U.dmp filesize=5G parallel=8 comp ...

  2. 特殊矩阵的压缩存储(对称矩阵,三角矩阵,对角矩阵,稀疏矩阵的顺序,链序存储,十字链表的建立)

    特殊矩阵的压缩存储 压缩存储的定义: 若多个数据元素的值都相同,则只分配一个元素值的存储空间,且 零元素不占存储空间. 能够压缩的一些矩阵: 一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等 ...

  3. sql还原数据库备份数据库_有关数据库备份,还原和恢复SQL面试问题–第二部分

    sql还原数据库备份数据库 In this article, we'll walk through, some of the refined list of SQL Server backup-and ...

  4. Mysql数据库备份和还原

    1. 命令备份和还原数据库 1.1命令备份数据 1)备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > ...

  5. LaZagne检测windows本地存储的密码

    LaZagne项目是用于检索存储在本地计算机上的大量密码的开源应用程序. 每个软件使用不同的技术(明文,API,自定义算法,数据库等)存储其密码. 该工具的开发是为了找到最常用的软件的密码. 下载到w ...

  6. 云计算之路-试用Azure:数据库备份压缩文件在虚拟机上的恢复速度测试

    测试环境:Windows Azure上海机房,虚拟机配置为大型(四核,7 GB 内存),磁盘情况见下图. 数据库备份压缩文件大于为12.0 GB (12,914,327,552 bytes),放置于T ...

  7. mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...

    本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...

  8. Oracle 数据库备份启用压缩以及remap

    1. Oracle数据库进行备份恢复 客户测试环境, 有时候需要从现场copy到公司, 压缩虽然能够减少部分空间大小,但是copy到虚拟机里面也时浪费很大量的磁盘,所以能够在备份恢复的过程中执行压缩最 ...

  9. mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储

    1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 本文以Linux系统 ...

最新文章

  1. 如何用XGBoost做时间序列预测?
  2. 5G人才报告 | 买5G手机不用卖肾,有这个就行(全文)
  3. 几道有意思的逻辑分析题
  4. xgboost算法_详解xgboost算法的样本不平衡问题
  5. 静态程序分析chapter3 - 数据流分析详述(Reaching Definitions、Live Variables、Available Expressions Analysis)
  6. 临时配置网络(ip,网关,dns)+永久配置
  7. Spark的实战题目——寻找5亿次访问中,访问次数最多的人
  8. 动力强劲的星型发动机,为何不用在汽车上呢?
  9. Win32ASM学习[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD
  10. 第 5-7 课:Java 中的各种锁和 CAS + 面试题
  11. 实用调试技巧 Debug Release F10 F11 初始化 越界访问 堆栈 模拟实现库函数
  12. 常用Keytool 命令
  13. 5、WPF实现简单计算器-非常适合初学者练习
  14. 万能打印之Delphi 2010实现(完结)
  15. 《数学之友》期刊简介及投稿要求
  16. HTML+CSS+JS实现 ❤️3D旋转魔方图片相册特效❤️
  17. php安装时候的源是什么,Windows安装源无效怎么办
  18. iOS微信实现第三方登录的方法
  19. Python实战案例01
  20. 利用Python实现NBA球员分析绘制数据可视化图表

热门文章

  1. 为什么吃完早饭后会犯困(如何度过一个不犯困的上午呢)
  2. 加盟炸酱面女孩韩式面馆 让你快速拥有一家特色快餐店
  3. ASEMI代理光宝光耦LTV-5314资料,LTV-5314规格书
  4. RasDial函数遇到623错误
  5. 诺基亚301支持java评测_诺基亚301具备强音质+长续航
  6. The kernel modle installed correctly , but no devices were recognized.
  7. minigui 时钟
  8. Android开发冷启动解决方案 实现秒开
  9. AI观察 | 我国人工智能企业数量达到1500家
  10. Android TextView autoLink 改变颜色,去掉link下划线