zoukankan      html  css  js  c++  java
  • 如何让SQL Server数据库自动备份并压缩成rar文件

    1、  先开启xm_cmdshell服务

    xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 2005中, xp_cmdshell 默认是关闭的。 

    两种方式启用xp_cmdshell 

      1.打开外围应用配置器—> 
      功能的外围应用配置器—> 
      实例名Database Enginexp_cmdshell—> 启用

    2.sp_configure 
      --开启xp_cmdshell部分
    --------------------------------------------------
    -- To allow advanced options to be changed.
    EXEC sp_configure 'show advanced options', 1
    GO
    -- To update the currently configured value for advanced options.
    RECONFIGURE
    GO
    -- To enable the feature.
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    -- To update the currently configured value for this feature.
    RECONFIGURE
    GO


    --通过xp_cmdshell执行shell命令的部分
    --------------------------------------------------
    Exec xp_cmdshell 'bcp '
    GO


    --关闭xp_cmdshell部分
    -----------------------------------------------------
    -- To allow advanced options to be changed.
    EXEC sp_configure 'show advanced options', 1
    GO
    -- To update the currently configured value for advanced options.
    RECONFIGURE
    GO
    -- To enable the feature.
    EXEC sp_configure 'xp_cmdshell', 0
    GO
    -- To update the currently configured value for this feature.
    RECONFIGURE
    GO

    3、新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进。

    DECLARE @strSql   VARCHAR(1000)

     ,@strSqlCmd VARCHAR(1000)

     ,@timeDateDiff INT

    SET @timeDateDiff = DATEDIFF(week,0,GETDATE())

    SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())

     WHEN 1 THEN @timeDateDiff -1

     ELSE @timeDateDiff END

    SET @strSql='E:DataBackupLiangJiaLun219'  -- 备份目录及备份的文件头

     +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112)  -- 完全备份日期

     +'_0100'    -- 完全备份时间

     +'完全备份'

    SET @strSqlCmd= @strSql+'.BAK'    --备份文件的扩展名

    BACKUP DATABASE [LiangJiaLun219]

     TO  DISK = @strSqlCmd WITH INIT

     ,NOUNLOAD

     ,NAME = N'LiangJiaLun219 备份'

     ,NOSKIP

     ,STATS = 10

     ,NOFORMAT

     操作如图一: 

                     

    4、 然后开始执行对数据库的压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入如下的SQL代码:

    DECLARE @strSql   VARCHAR(1000)

     ,@strSqlCmd VARCHAR(1000)

     ,@timeDateDiff INT

     ,@strWeekDay VARCHAR(20)

    SET @timeDateDiff= DATEDIFF(week,0,GETDATE())

    SET @timeDateDiff= CASE DATEPART(WEEKDAY,GETDATE())

     WHEN 1 THEN @timeDateDiff-1

     ELSE @timeDateDiff END

    SET @strSql='E:DataBackupLiangJiaLun219'  -- 备份目录及备份的文件头

     +CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112)  -- 完全备份日期

     +'_0100'    -- 完全备份时间

     +'完全备份'

    SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN '星期天'

      WHEN 2 THEN '星期一'

      WHEN 3 THEN '星期二'

      WHEN 4 THEN '星期三'

      WHEN 5 THEN '星期四'

      WHEN 6 THEN '星期五'

      WHEN 7 THEN '星期六' END

    SET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+'  >> E:DataBackupCompressDataBaseLiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

    EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

    SET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> E:DataBackupCompressDataBaseLiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

    PRINT LEN(@strSqlCmd)

    PRINT (@strSqlCmd)

    EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

    SET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+'  >> E:DataBackupCompressDataBaseLiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'

    EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

     

    完成后我们可以看到操作步骤的对话框,如图三,数据完全备份的步骤:

     

    6、设定计划任务

     

    7、如果执行一下代码  首先必须安装WinRar 然后  在环境变量中---系统环境变量 Path 中 把Rar.exe 的路径加进去 (如:C:/Program Files/WinRar/) 这样就可以了,看好了 只需要加路径。。。不需要Rar.exe;我们之前干的这些步骤是为了  下面红色地方,因为要执行Rar.exe  不然会报  不是内部程序 或者不是内部命令 。。。

     

  • 相关阅读:
    hadoop-2.6.0-src源码导入Eclipse 转载
    sqoop1.4.6+hadoop2.6.0 转载
    eclipse构建maven+scala+spark工程 转载
    eclipse连hadoop2.x运行wordcount 转载
    Thinking in BigData 系列
    hadoop 安装教程 转载
    JAVA泛型详解2 转载
    Java泛型详解 转载
    HttpClient 版本变化 转载
    HttpClient 与 HtmlParser 简介 转载
  • 原文地址:https://www.cnblogs.com/liangjialun219/p/3896506.html
Copyright © 2011-2022 走看看