使用SQLSERVER的擴展存儲過程實現遠端備份與恢復最近我在為公司的框架程式(以資料應用為導向的應用體系)做資料管理模組 ,這個模組的需求比較簡單 :備份 、恢復和清理日誌。我公司的軟體基本上以C/S為基本架構,所以資料管理模組中兩個主要的功能‘備份與恢復’都可能會在Client端操作,備份與恢復’的檔也都有可能存儲 在client西裝端,因而這個資料管理模組就必須能夠實現在遠端備份與恢復資料 庫。 文章的前提闡述完了,就該說說如何具體實現吧。其實都很簡單,我想寫個遠端備份的測試實例給大家看,就能夠很清楚的描述吧!  實例說明:  環境: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窗口) 備註:xp_cmdshell 這個擴展存儲過程只能SA級別的用戶永慶房屋調用,而且是SQLSERVER的安全隱患之一,許多DBA都喜歡將其刪除或者禁用,所以開發人員使用時要倍加小心哦。  文章中的例子只是簡要的說明了應如何利用擴展存儲過程實現遠端備份與恢復,沒有涉及安全以及其他方面的考慮,希望讀者在代碼中自行完善。


.msgcontent .wsharing ul li { text-indent: 0; }



G2000

Facebook
Plurk
YAHOO!

arrow
arrow
    全站熱搜

    mw48mwoysm 發表在 痞客邦 留言(0) 人氣()