#region 類說(shuō)明//-----------------------------------------------------------------------------//// 項(xiàng)目名稱:***// 文件名稱:DBBakManager.cs// 文件說(shuō)明:對(duì)數(shù)據(jù)庫(kù)備份文件進(jìn)行管理。提供備份、還原、備份文件管理操作。//// 開(kāi)始日期:2007年04月04日// 開(kāi)發(fā)人員:***////-----------------------------------------------------------------------------#endregionusing System;using System.Collections.Generic;using System.IO;using System.Text;using SQLDMO; //添加引用C:PRogram FilesMicrosoft SQL Server80ToolsBinnSQLDMO.dllnamespace GSIM.StuManager{ /// <summary> /// 對(duì)SQL Server數(shù)據(jù)庫(kù)備份文件進(jìn)行管理。提供備份、還原、備份文件管理操作。 /// </summary> public class DBBakManager { 字段#region 字段 private string _serverName; private string _userName; private string _passWord; private string _dbName; #endregion 構(gòu)造#region 構(gòu)造 /// <summary> /// 構(gòu)造函數(shù) /// </summary> /// <param name="serverName">數(shù)據(jù)庫(kù)服務(wù)器名 /// <param name="userName">數(shù)據(jù)庫(kù)用戶名 /// <param name="password">用戶密碼 /// <param name="dbName">數(shù)據(jù)庫(kù)名 public DBBakManager(string serverName, string userName, string password,string dbName) { _serverName = serverName; _userName = userName; _password = password; _dbName = dbName; } #endregion 方法#region 方法 /// <summary> /// 備份數(shù)據(jù)庫(kù) /// </summary> /// <param name="saveFileName">保存的備份文件路徑(包括文件名,文件名格式為:"DBName(yyyyMMddHHmm).bak") /// <returns>操作成功返回true,否則返回false</returns> public bool BackUpDB(string saveFileName) { SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass(); try { svr.Connect(_serverName, _userName, _password); SQLDMO.Backup bak = new SQLDMO.BackupClass(); bak.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database; bak.Initialize = true; bak.Database = _dbName; bak.Files = saveFileName; bak.SQLBackup(svr); return true; } catch (Exception err) { return false; } finally { svr.Close(); } } /// <summary> /// 還原數(shù)據(jù)庫(kù)備份 /// </summary> /// <param name="fileName">還原的備份文件路徑(包括文件名,文件名格式為:"DBName(yyyyMMddHHmm).bak") /// <returns>操作成功返回true,否則返回false</returns> public bool RestoreDB(string fileName) { SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass(); try { svr.Connect(_serverName, _userName, _password); //取得所有的進(jìn)程列表 SQLDMO.QueryResults qr = svr.EnumProcesses(-1); int iColPIDNum = -1; int iColDbName = -1; //找到和要恢復(fù)數(shù)據(jù)庫(kù)相關(guān)的進(jìn)程 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; } //將相關(guān)進(jìn)程關(guān)閉 for (int i = 1; i <= qr.Rows; i++) { int lPID = qr.GetColumnLong(i, iColPIDNum); string strDBName = qr.GetColumnString(i, iColDbName); if (strDBName.ToUpper() == _dbName) svr.KillProcess(lPID); } SQLDMO.Restore res = new SQLDMO.RestoreClass(); res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; res.Files = fileName; res.Database = _dbName; res.FileNumber = 1; res.ReplaceDatabase = true; res.SQLRestore(svr); return true; } catch (Exception err) { return false; } finally { svr.Close(); } } /// <summary> /// 獲得所有數(shù)據(jù)庫(kù)備份文件信息,如:200704041120. /// </summary> /// <param name="filePath">保存?zhèn)浞菸募奈募A路徑(不包括文件名) /// <returns>包含文件信息的字符串組</returns> public string[] GetAllDBBak(string filePath) { string[] DBBakInfo = Directory.GetFiles(filePath, "BMIS*"); int start = DBBakInfo[0].IndexOf("("); int end = DBBakInfo[0].IndexOf(")"); //除去多余部分,返回名字中的時(shí)間信息,如:200704041120. for (int i = 0; i < DBBakInfo.Length; i++) { DBBakInfo[i] = DBBakInfo[i].Substring(start + 1, end - start - 1); } return DBBakInfo; } /// <summary> /// 刪除一個(gè)數(shù)據(jù)庫(kù)備份文件 /// </summary> /// <param name="fileName">刪除的備份文件路徑(包括文件名,文件名格式為:"DBName(yyyyMMddHHmm).bak") /// <returns>操作成功返回true,否則返回false</returns> public bool DeleteDBBak(string fileName) { if (File.Exists(fileName) == true) { File.Delete(fileName); return true; } else { return false; } } #endregion }} <pre></pre>
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注