將SQL Server遠程伺服器的Database Backup到目標機)

來源:互聯網
上載者:User
使用前,必須在目標機上開通一個可寫訪問的共用資料夾。
預存程序內容如下:
CREATE PROCEDURE Sp_Backup_To_Remote
        (
                @Database VARCHAR(128), -- 要備份的資料庫名  
                 @RemoteIP VARCHAR(15), -- 備份到目標機的IP地址  
                 @ShareName VARCHAR(128), -- 目標機的共用名稱  
                 @SharePath VARCHAR(128), -- 目標機的共用中的路徑,將備份到這裡  
                 @UserName VARCHAR(20), -- 串連目標機共用的使用者,此使用者必須具有對該共用的寫入權限  
                 @Password VARCHAR(20), -- 串連目標機共用的密碼  
                 @BackupFile VARCHAR(128) -- 備份到目標機的檔案名稱 
        )
        AS
        DECLARE @Result INT
        DECLARE @ErrorMessage VARCHAR(512)

        /** 添加使用的備份裝置 */
        -- 備份裝置名稱 
        DECLARE @DeviceName VARCHAR(128)
        SET @DeviceName = @UserName + '@' + @RemoteIP + '\' + @ShareName + '\' + @SharePath + '\'
        -- 備份裝置路徑 
        DECLARE @DevicePath VARCHAR(512)
        SET @DevicePath = '\\' + @RemoteIP + '\' + @ShareName + '\' + @SharePath + '\' + @BackupFile
        -- 添加備份裝置 
        EXEC @Result = Sp_AddumpDevice 'Disk' , @DeviceName, @DevicePath 
        IF @Result = 1
        BEGIN
                SET @ErrorMessage = '添加備份裝置失敗。名為 ' + '''' + @DevicePath + '''' + ' 的物理裝置已經存在,為保證成功備份,請手工刪除 master.dbo.sysdevices 表中列phyname值為 ' + '''' + @DevicePath + '''' + ' 的裝置。'  
                RAISERROR (@ErrorMessage, 16, 1)
                RETURN 0
        END

        /** 添加共用串連 */
        -- 添加共用串連命令 
        DECLARE @AddShare VARCHAR(512)
        SET @AddShare = 'NET USE \\' + @RemoteIP + '\' + @ShareName + ' ' + @Password + ' /USER:' + @UserName + '@' + @RemoteIP
        -- 執行添加共用串連 
        EXEC @Result = xp_cmdshell @AddShare
        IF @Result = 1
        BEGIN
                SET @ErrorMessage = '添加共用串連失敗,備份失敗。'
                RAISERROR (@ErrorMessage, 16, 1)
                RETURN 0
        END

        /** 備份資料庫 */
        BACKUP DATABASE @Database TO @DeviceName
        
        /** 刪除共用串連 */
        -- 刪除共用串連命令 
        DECLARE @DeleteShare VARCHAR(512)
        SET @DeleteShare = 'NET USE \\' + @RemoteIP + '\' + @ShareName + ' /DELETE' 
        -- 執行刪除共用串連 
        EXEC @Result = xp_cmdshell @DeleteShare
        IF @Result = 1
        BEGIN
                SET @ErrorMessage = '刪除共用串連失敗。'
                RAISERROR (@ErrorMessage, 16, 1)
                RETURN 0
        END

        /** 刪除使用的備份裝置 */
        EXEC @Result = Sp_DropDevice @DeviceName
        IF @Result = 1
        BEGIN
                SET @ErrorMessage = '刪除備份裝置失敗。請手工刪除 master.dbo.sysdevices 表中列phyname值為 ' + '''' + @DevicePath + '''' + ' 的裝置。'
                RAISERROR (@ErrorMessage, 16, 1)
                RETURN 0
        END
        PRINT '命令完成。'

        RETURN 1
        GO

  調用這個預存程序,那就很方便了,可以在目標機上(可以是本地),也可以在遠程伺服器上,當然也可以是別的機子,只不過,在目標機或本地或別的機子上調用這個預存程序時,要為遠程伺服器添加一個SQL Server註冊,然後使用<這個註冊名>.master.dbo.Sp_Backup_To_Remote就可以了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.