C 實現SQL資料庫備份與恢復

2021-07-28 18:02:14 字數 2758 閱讀 9612

c#實現sql資料庫備份與恢復

有兩種方法,都是儲存為.bak檔案。一種是直接用sql語句執行,另一種是通過引用sql server的sqldmo元件來實現: 1

.通過執行sql語句來實現

注意,用sql語句實現備份與還原操作時,最好不要使用需要備份或還原的資料庫連線,而使用master,否則可能會出現如下三個問題:(

1)超時時間已到。在操作完成之前超時時間已過或伺服器未響應。(2) 在向伺服器傳送請求時發生傳輸級錯誤。(provider:共享記憶體提供程式,error:0-系統無法開啟檔案。) (3)從伺服器接收結果時發生傳輸級錯誤。(provider:共享記憶體提供程式,error:0 -系統無法開啟檔案。) ,如果一定要用這個連線的話,要注意在執行sql語句前加個sql語句:use master,這樣可能會解決以上問題。

(1)資料備份語句:backup database 資料庫名 to disk='

儲存路徑\dbname.bak'(

2)資料恢復語句:restore database 資料庫名 from disk='

儲存路徑\dbname.bak

' with move '

dbname_data

' to '

c:\tcomcrm20041217.mdf

', --資料檔案還原後存放的新位置

move

'dbname_log

' to '

c:\comcrm20041217.ldf

' ----日誌檔案還原後存放的新位置

關於這兩個語句還有更詳細的介紹:http:

//資料庫備份與恢復例項

private

void btnbak_click(object sender, eventargs e) //

備份

private

void btnreduct_click(object sender, eventargs e) //

恢復

//////

對資料庫的備份和恢復操作,sql語句實現

/// ///

實現備份或恢復的sql語句

///該操作是否為備份操作,是為true否,為false

private

void bakreductsql(string cmdtext,bool

isbak)

else

cmdbakrst.executenonquery();

if (!isbak)

else

}catch

(sqlexception ***c)

catch

(exception ex)

finally

}另外,如果出現:「尚未備份資料庫的日誌尾部」錯誤,可以在還原語句後加上 with replace 或 with stopat

2.用sqldmo實現(下面**引用別人的)

//資料庫備份

string backaway =textbox1.text.trim();

sqldmo.backup obackup = new

sqldmo.backupclass();

sqldmo.sqlserver osqlserver = new

sqldmo.sqlserverclass();

try

catch

finally //

資料庫恢復

//獲取恢復的路徑

string dbaway =textbox2.text.trim();

sqldmo.restore restore = new

sqldmo.restoreclass();

sqldmo.sqlserver server = new

sqldmo.sqlserverclass();

server.connect(serverip, serverid, serverpwd);

//kill database process

conn = new

工資管理系統.ccutility.connstring();

conn.dbopen();

sqlcommand cmd = new sqlcommand("

use master select spid from sysprocesses ,sysdatabases where sysprocesses.dbid=sysdatabases.dbid and sysdatabases.name='k2'

", conn.connection);

sqldatareader dr =cmd.executereader();

while

(dr.read())

dr.close();

conn.dbclose();

try

catch

(exception ex)

finally

恢復相關的引數和備份相同,不再解釋,自己看一下.

上面兩個函式呼叫到了更改進度條的兩個函式:

private

void step2(string message, int

percent)

private

void step(string message, int

percent)

setp對應備份,,setp2對應恢復....

**

C 實現SQL資料庫備份與恢復

有兩種方法,都是儲存為.bak檔案。一種是直接用sql語句執行,另一種是通過引用sql server的sqldmo元件來實現 1.通過執行sql語句來實現 注意,用sql語句實現備份與還原操作時,最好不要使用需要備份或還原的資料庫連線,而使用master,否則可能會出現如下三個問題 1 超時時間已到...

C 實現SQL資料庫備份與恢復

有兩種方法,都是儲存為.bak檔案。一種是直接用sql語句執行,另一種是通過引用sql server的sqldmo元件來實現.注意,用sql語句實現備份與還原操作時,最好不要使用需要備份或還原的資料庫連線,而使用master,否則可能會出現如下三個問題 1 超時時間已到。在操作完成之前超時時間已過或...

c 備份恢復sql資料庫

很多人想實現在c 中備份與恢復sql資料庫,又想要有在sql中那種進度條的狀態.其實用c 的sqldmo就可以實現 資料庫備份 string backaway textbox1.text.trim sqldmo.backup obackup new sqldmo.backupclass sqldmo...