首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 備份至本地用戶端共享資料夾預存程序

     編輯:關於SqlServer

功能說明

預存程序 up_dbbackup 將伺服器端資料庫備份至用戶端機器的共享資料夾 (透過 NET USE 映射磁碟機),支援錯誤處理與狀態回傳。

參數

參數型別說明
@backup_db_nameVARCHAR(128)要備份的資料庫名稱
@filenameVARCHAR(128)備份檔完整路徑 (含檔名),需以 \ 結尾的共享路徑 (如 Z:\backup\db.bak)
@flagVARCHAR(60) OUTPUT執行結果訊息

完整程式碼

CREATE PROCEDURE up_dbbackup
(
    @backup_db_name VARCHAR(128),
    @filename VARCHAR(128),
    @flag VARCHAR(60) OUTPUT
)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @sql NVARCHAR(4000), @par NVARCHAR(1000), @lFlag INT;

    -- 檢查資料庫是否存在
    IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE name = @backup_db_name)
    BEGIN
        SELECT @flag = '資料庫 ' + @backup_db_name + ' 不存在!';
        RETURN;
    END

    -- 驗證路徑格式
    IF RIGHT(@filename, 1) <> '\' AND CHARINDEX('\', @filename) <> 0
    BEGIN
        -- 嘗試映射 Z: 至用戶端共享
        EXEC @lFlag = master..xp_cmdshell 'DIR Z:';
        IF @lFlag <> 0
        BEGIN
            EXEC @lFlag = master..xp_cmdshell 'NET USE Z: \\192.168.2.45\db$ test /user:ca.atc\test';
            IF @lFlag <> 0
            BEGIN
                SELECT @flag = '伺服器建立目錄映射失敗!';
                RETURN;
            END
        END

        -- 執行備份
        SELECT @par = '@filename VARCHAR(1000)';
        SELECT @sql = 'BACKUP DATABASE ' + @backup_db_name + ' TO DISK = @filename WITH INIT';
        EXEC sp_executesql @sql, @par, @filename;

        -- 移除映射
        EXEC master..xp_cmdshell 'NET USE Z: /DELETE';
        SELECT @flag = '資料庫 ' + @backup_db_name + ' 備份成功!';
    END
    ELSE
    BEGIN
        SELECT @flag = '資料庫備份路徑錯誤!';
    END
END

使用範例

DECLARE @msg VARCHAR(60);
EXEC up_dbbackup 'Northwind', 'Z:\bak\Northwind.bak', @msg OUTPUT;
PRINT @msg;

注意事項

  • 需啟用 xp_cmdshell 且 SQL Server 服務帳戶具備網路存取權限。
  • 用戶端共享資料夾需設定「完全控制」權限給指定帳戶。
  • 路徑參數 @filename 必須為映射磁碟機路徑 (如 Z:\...),UNC 路徑 (\\server\share\...) 在舊版 SQL Server 可能不支援。
  • 生產環境建議改用維護計畫或第三方備份工具,支援壓縮、加密、多目標複製。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved