joey0210

SqlServer 远程备份

CREATE PROC bakup_Folder_Pro
    -- 备份本地文件夹到远程计算机
    -- 包括备份数据库
AS
    DECLARE    @dbName            VARCHAR(50)        --需备份的数据名称
    DECLARE    @fileTitle        VARCHAR(200)        --  文件标题
    DECLARE    @folder            VARCHAR(200)        --   文件夹名称
    DECLARE @fileName         VARCHAR(200)        --          备份文件名
    DECLARE    @localFolderPath    VARCHAR(200)        --         本地文件夹路径
    DECLARE    @localBckPath        VARCHAR(200)        --          本地备份文件夹路径
    DECLARE    @netPath        VARCHAR(200)        --                       远程文件夹路径
    DECLARE    @netFolderPath        VARCHAR(200)        --          新建的远程文件夹路径
    DECLARE    @netUserName        VARCHAR(200)        --         远程计算机用户名
    DECLARE    @netUserPwd        VARCHAR(200)        --       远程计算机密码
    DECLARE    @netSqlStr        VARCHAR(500)        --      映射字符串
    DECLARE    @copySqlStr        VARCHAR(500)        --   copy到远程计算机字符串
    DECLARE    @delSqlStr        VARCHAR(500)        --   del本地备份文件字符串
    DECLARE    @flag            VARCHAR(50)        --   标记,是否删除本机文件

    SET    @dbName            =    \'DB_ESPC\'
    SET    @fileTitle        =    REPLACE(REPLACE(REPLACE(CONVERT(CHAR(20),GETDATE(),120),\':\',\'\'),\' \',\'\'),\'-\',\'\')
    SET    @folder            =    @fileTitle    --  文件夹自动生成
    SET    @fileName        =    @fileTitle    +    \'.bak\'
    SET    @localFolderPath    =    \'E:\YY_SQJZGL\'
    SET    @localBckPath        =    @localFolderPath+\'\bck\\'+@fileName
    SET    @netPath        =    \'\\172.19.169.136\sqjzxxglxt\'
    SET    @netFolderPath        =    @netPath +\'\\'+@fileTitle
    SET    @netUserName        =    \'172.19.169.136\yy\'
    SET    @netUserPwd        =    \'119041\'
    SET    @netSqlStr        =    \'net use \' +     @netPath + \' "\' + @netUserPwd + \'" /user:\' + @netUserName
    SET    @copySqlStr        =    \'XCOPY    \'  +     @localFolderPath + \'    /i/e    \' + @netFolderPath
    SET    @delSqlStr        =    \'DEL    \'  +    @localBckPath
    SET    @flag            =    \'True\'

    -- 将数据库备份到本机目录下,WITH INIT 表示覆盖相同文件
    BACKUP    DATABASE    @dbName    TO    DISK=@localBckPath    WITH    INIT   

    -- 映射
    EXEC    master..xp_cmdshell    @netSqlStr

    -- 将本机文件夹copy到远程计算机
    EXEC    master..xp_cmdshell    @copySqlStr

    -- 删除映射
    EXEC master..xp_cmdshell \'net use * /del /y\'

    -- 选择是否删除本机文件
    IF(@flag = \'True\')
    EXEC    master..xp_cmdshell    @delSqlStr

GO

分类:

技术点:

相关文章:

  • 2022-01-04
  • 2021-12-22
  • 2021-05-27
  • 2022-02-01
  • 2022-12-23
  • 2021-05-18
  • 2021-11-12
猜你喜欢
  • 2022-12-23
  • 2021-12-06
  • 2021-06-07
  • 2022-02-18
  • 2022-01-28
  • 2022-02-26
  • 2022-02-19
相关资源
相似解决方案