回覆列表
  • 1 # daazhu1

    最近在看聯機從書,在看到sp_addumpdevice時無意間看到如下內容:

    "

    [@physicalname =] "physical_name"

    備份裝置的物理名稱。物理名稱必須遵照作業系統檔名稱的規則或者網路裝置的通用命名規則,並且必須包括完整的路徑。physical_name 的資料型別為 nvarchar(260),沒有預設值,並且不能為 NULL。

    當建立遠端網路位置上的備份裝置時,請確保在其下啟動 SQL Server 的名稱對遠端的計算機有適當的寫入能力。

    B. 新增網路磁碟備份裝置

    下面的示例顯示一個遠端磁碟備份裝置。在其下啟動 SQL Server 的名稱必須對該遠端檔案擁有許可權。

    USE master

    EXEC sp_addumpdevice "disk", "networkdevice", "\\servername\sharename\path\filename.ext"

    以前曾看到過有人問,怎麼樣才能將資料備份到網路上,一直沒有答案,然後我就試驗了一把.

    在伺服器上建了一個目錄,然後確保共享並有許可權,如果需要建在共享目錄下的目錄下,那還得保證使用者有許可權

    當然,SQLSERVER系統啟動早於登入,一般使用者會在登入中使用本地系統賬戶,我想在登入到系統之前一直是

    administrator使用者模擬,因此,我將登入的賬戶改為了網路使用者,因為我公司有域,因此我將域使用者設定為本機

    的系統管理員,以確保該服務能啟動.

    接下來更簡單了:

    sp_addumpdevice "DISK","NetWork","\\server\d$\databak\xuzh.bak"

    go

    backup database xuzh to network

    得到的結果如下:

    已處理 96 頁,這些頁屬於資料庫 "xuzh" 的檔案 "xuzhP01"(位於檔案 2 上)。

    已處理 16 頁,這些頁屬於資料庫 "xuzh" 的檔案 "xuzhP02"(位於檔案 2 上)。

    已處理 16 頁,這些頁屬於資料庫 "xuzh" 的檔案 "xuzhS01"(位於檔案 2 上)。

    已處理 8 頁,這些頁屬於資料庫 "xuzh" 的檔案 "xuzhS02"(位於檔案 2 上)。

    已處理 1 頁,這些頁屬於資料庫 "xuzh" 的檔案 "xuzh_Log"(位於檔案 2 上)。

    BACKUP DATABASE 操作成功地處理了 137 頁,花費了 0.516 秒(2.161 MB/秒)。

    成功完成網路備份

    另外,----------------------

    例項說明:

    環境:win2k+sqlserver 2K+查詢分析器

    SQLSERVER服務例項名稱:mainserver

    需要備份的資料庫名稱: msdb

    本地機器名稱(Client端):david

    本地使用者:zf 密碼:123

    本地域名:domain

    本地提供備份需求的資料夾:e:\test

    第一步: 建立共享資料夾

    在程式程式碼中呼叫(或者CMD視窗) net share test=e:\test

    或者用NetShareAdd這個API

    簡要說明:

    net share : 是WINDOWS內部的網路命令。

    作用:建立本地的共享資源,顯示當前計算機的共享資源資訊。

    語法:參見 net share /?

    第二步: 建立共享信用關係

    master..xp_cmdshell "net use \\david\test 123 /user:domain\zf"

    簡要說明:

    1:xp_cmdshell :是SQLSERVER的擴充套件儲存過程。

    作用,以作業系統命令列直譯器的方式執行給定的命令字串,

    並以文字行方式返回任何輸出。

    語法:參見SQLSERVER聯機幫助

    2:net use : 是WINDOWS內部的網路命令。

    作用,將計算機與共享資源連線或斷開,或者顯示關於計算機

    連線的資訊。該命令還控制持久網路連線。

    語法:參見 net use /?

    第三步:備份資料庫

    backup database msdb to disk="\\david\test\msdb.bak"

    這個不需要說明吧,語法參見SQLSERVER聯機幫助

    在程式程式碼中呼叫(或者CMD視窗) net share test /delete

    或者用NetShareDel這個API

    結果:

    已處理 1376 頁,這些頁屬於資料庫 "msdb" 的檔案 "MSDBData"(位於檔案 1 上)。

    已處理 1 頁,這些頁屬於資料庫 "msdb" 的檔案 "MSDBLog"(位於檔案 1 上)。

    BACKUP DATABASE 操作成功地處理了 1377 頁,花費了 3.653 秒(3.086 MB/秒)。

    這樣mainserver伺服器上的msdb就備份到了david機器的E:\test\msdb.bak檔案了,使用起來很簡單吧?恢復資料庫操作也是一樣,只要將第三個步驟的語句改為"restore database msdb from disk="\\david\test\msdb.bak"就可以啦。。你看完了也可以試試呀?!(最簡單的測試工具查詢分析器+CMD視窗)

    文章中的例子只是簡要的說明了應如何利用擴充套件儲存過程實現遠端備份與恢復,沒有涉及安全以及其他方面的考慮,希望讀者在程式碼中自行完善。

  • 中秋節和大豐收的關聯?
  • 漫威漫畫的觀看順序應該怎樣安排好?