SQL SERVER備份和恢複實戰
由於手中有個項目馬上完工了,開始做資料庫的備份與恢複此類工作,查了下,大體有幾種實現方式,我的目標是在伺服器上備份便可,於是找了幾種方法實現了下,大致分為:
1:通過SQL進行備份
此時的SQL又分為預存程序,以及遠端調用
預存程序參考如下文章,已經是比較全面的了,除了有個限制,想要在MASTER下,建立各種函數外,其它的比較簡單
http://blog.csdn.net/zjcxc/archive/2003/12/29/20074.aspx
2:遠端執行SQL進行備份的,其實和備份資料檔案到異地 是一樣的幾步,只不過備份的時候,遠端共用資料夾改成本地的而已
遠端的有4步:
1)開啟遠端共用資料夾
net share ShareForder=c:/AppDataBackup
2)SQL 執行SQL SERVER的擴充過程,訪問遠端共用資料夾,建立共用信用關係
master..xp_cmdshell 'net use //10.10.50.212/ShareForder UserPassword /user:DomainName/UserName'
3)備份資料庫檔案到遠端共用資料夾
backup database PNC1 to disk='//10.10.50.212/ShareForder/Database.bak'
4)關閉和刪除共用資料夾
net share ShareForder /delete
具體實現參考
http://www.cnblogs.com/oletan/archive/2009/01/06/1370175.html
這裡的實現我也測試過,不知道為什麼就是無法訪問共用資料夾,可能是公司域或者防火牆造成的吧,而我的需求是備份到伺服器本地,於是將共用資料夾改成本地的,就實現了。
3:通過SQLDMO實現
首先要引用SQLDMO的DLL,動態連結程式庫,然後使用他來備份遠端資料庫,備份檔案位於伺服器上
開發這個實現的時候遇到個問題就是,由於我的備份檔案還比較小,備份的進度條沒有任何提示,懷疑是程式出了問題,後來查了下,才知道大家都有遇到過類似問題,需要檔案大於多少的,以及機器效能差的時候進度條才會顯示,看來機器效能好在微軟的眼中未必是好事情。微軟看來還是喜歡586之類的效能。
後面又找了個能夠顯示進度條的其它方式實現了,實現了備份和恢複。在實現恢複的時候會先殺掉串連到伺服器上的所有其它進程,應用程式備份完之後再次串連會拋出一個錯誤,需要重新與伺服器建立串連便可。這是想要注意的地方,其它的比較簡單。
附件裡的是我做測試的各種例子,以及用SQL實現各種資料庫操作的一個案例,都集中的放在一起了,還有就是加解密連接字串的樣本,免得大家去找例子了,至於文章GOOGLE下就大把的出來了。
:http://download.csdn.net/source/3112211