標籤:winform blog io os ar for 檔案 資料 div
Winform的代碼,最好是在資料所在電腦上運行代碼,不然會因為許可權問題導致失敗。
Database Backup:
SqlConnection con = new SqlConnection("Data Source=.;;Initial Catalog=DB_Test;User ID=sa;Password=sa"); string sql = "backup database DB_Test to disk= ‘c:\\aVb.bak‘"; con.Open(); if (!File.Exists("c:\\aa.bak")) { SqlCommand com = new SqlCommand(sql, con); com.ExecuteNonQuery(); //執行sql語句 lblmessage.Text = "系統資訊:備份成功!"; } else { lblmessage.Text = "系統資訊:檔案已存在!"; }
資料庫還原:
//引用SQLDMO.dll,SQLDMO由Microsoft SQL Server內建的SQLDMO.dll提供,SQLDMO.dll是一個COM對象 SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass(); try { svr.Connect("192.168.89.20", "sa", "Aa123456"); //取得所有的進程列表 SQLDMO.QueryResults qr = svr.EnumProcesses(-1); int iColPIDNum = -1; int iColDbName = -1; //找到和要恢複資料庫相關的進程 for (int i = 1; i <= qr.Columns; i++) { string strName = qr.get_ColumnName(i); if (strName.ToUpper().Trim() == "SPID") { iColPIDNum = i; } else if (strName.ToUpper().Trim() == "DBNAME") { iColDbName = i; } if (iColPIDNum != -1 && iColDbName != -1) break; } //將相關進程殺死 for (int i = 1; i <= qr.Rows; i++) { int lPID = qr.GetColumnLong(i, iColPIDNum); string strDBName = qr.GetColumnString(i, iColDbName); if (strDBName.ToUpper() == strDbName.ToUpper()) svr.KillProcess(lPID); } SQLDMO.Restore res = new SQLDMO.RestoreClass(); res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; res.Files = strFileName; res.Database = strDbName; res.FileNumber = 1; res.ReplaceDatabase = true; res.SQLRestore(svr); return true; } catch (Exception err) { //throw (new Exception("" + err.Message)); MessageBox.Show("恢複資料庫失敗,請關閉所有和該資料庫連接的程式!" + err.Message); return false; } finally { svr.DisConnect(); }
C# 還原SQL資料庫(非預存程序方式)