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

posted on 2011-04-18 16:55  Joey_zy0210  阅读(1032)  评论(0编辑  收藏  举报

导航