zoukankan      html  css  js  c++  java
  • SQL Server数据库备份(异机)

    简单的远程异机备份数据库功能,通过这个存储过程,讲远程其他机器上的数据库备份到本地。其主要原理为:

    1.通过XP_CMDSHELL执行Windows命令,将本机的共享目录映射为远程机器的网络驱动器。

    2.通过SQL脚本将数据库备份到网络驱动器中。

    3.通过XP_CMDSHELL执行命令删除映射的网络驱动器。

    使用的时候注意开启XP_CMDSHELL配置(见存储过程注释部分)。

    /******************************************************************************************************
    **  功能:远程异机备份数据库
    **  作者:Danny,Li
    **  日期:2013-09-04
    **    ---------------------------------------------------------------------------------------------------
    **    eg:EXEC [proc_RemoteBackupDB] 'DataBaseName','\DannyPcShareFolder','domaindanny','123456'
    **    
    *******************************************************************************************************/
    CREATE PROCEDURE [dbo].[proc_RemoteBackupDB]
        @databaseName varchar(50),            -- 需要备份的数据库名称
        @shareFolderPath varchar(250),        -- 共享目录路径(如:\DannyPcShareFolder)
        @shareFolderAccount varchar(50),    -- 共享目录读写权限帐户名(如:domaindanny)
        @shareFolderPassword varchar(50)    -- 共享目录读写权限帐户密码
    AS
    BEGIN
        -- 启用 XP_CMDSHELL 配置
        --SP_CONFIGURE 'SHOW ADVANCED OPTIONS', 1
        --RECONFIGURE
        --GO
        --SP_CONFIGURE 'XP_CMDSHELL', 1
        --RECONFIGURE
        --GO
        
        DECLARE @sqlStr VARCHAR(1000);
        
        -- 映射网络驱动器
        SET @sqlStr = 'EXEC MASTER..XP_CMDSHELL ''NET USE L: '+ @shareFolderPath +' "'+ @shareFolderPassword +'" /USER:'+ @shareFolderAccount +''';';
        
        -- 备份数据库
        DECLARE @BackupFile VARCHAR(200);
        SET @BackupFile = @databaseName + CONVERT(VARCHAR(100), GETDATE(), 12) + '.BAK';
        SET @sqlStr = @sqlStr + ' BACKUP DATABASE '+ @databaseName +' TO DISK = ''L:'+ @BackupFile +''' WITH INIT;';
        
        -- 删除网络驱动器映射
        SET @sqlStr = @sqlStr + ' EXEC MASTER..XP_CMDSHELL ''NET USE L: /DELETE'';';
        
        -- 执行SQL语句
        PRINT(@sqlStr);
        EXEC(@sqlStr);
    END
  • 相关阅读:
    CPU上下文的切换
    linux 零拷贝
    整型的长度
    What is the Memory Model in C++11
    leetcode刷题笔记九十二题 反转链表II
    leetcode刷题笔记九十一题 解码方法
    leetcode刷题笔记九十题 子集II
    leetcode刷题笔记八十九题 格雷编码
    leetcode刷题笔记八十八题 合并两个有序数组
    leetcode刷题笔记八十七题 扰乱字符串
  • 原文地址:https://www.cnblogs.com/dannyli/p/4160177.html
Copyright © 2011-2022 走看看