[整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...
/// <summary>
/// 通過調用MSSQL的SQLDMO.DLL文件來實現備份數據庫
/// 1.首先在在項目中引用SQLDMO.DLL文件。
/// 2.在引用中的SQLDMO.DLL文件右擊-->屬性-->設置[嵌入互操作類型]為flash
/// </summary>
public static void DBBackup()
{
SQLDMO.Backup dbBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer sqlServer = new SQLDMO.SQLServerClass();
try
{
sqlServer.LoginSecure = false;
sqlServer.Connect("localhost", "sa", "");
dbBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
dbBackup.Database = "kuang"; //數據庫名字
dbBackup.Files = @"d:\kuang_bak.bak"; //備份位置
dbBackup.BackupSetName = "kuang"; //名稱,在企業管理器里面選擇備份的時候也有這個,貌似沒用。
dbBackup.BackupSetDescription = "數據庫備份"; //描述,在企業管理器里面選擇備份的時候也有這個,貌似沒用。
dbBackup.Initialize = true;
dbBackup.SQLBackup(sqlServer);
}
catch
{
throw;
}
finally
{
sqlServer.DisConnect();
}
}
?
?
/// <summary>
/// 通過調用MSSQL的SQLDMO.DLL文件來實現從備份文件恢復到是數據庫
/// 注:恢復是數據庫必須是沒有鏈接的。清楚鏈接的方法:在企業管理器右擊數據庫-->分離數據庫-->點擊清楚按鈕即可
/// </summary>
private void DBReply()
{
SQLDMO.Restore restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer sqlserver = new SQLDMO.SQLServerClass();
sqlserver.LoginSecure = false;
sqlserver.Connect("localhost", "sa", "");
restore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
restore.Database = "kuang";
restore.Files = @"d:\kuang_bak.bak";
restore.FileNumber = 1;
restore.SQLRestore(sqlserver);
}
?
在回復的過程中,需要保證數據庫沒有正在使用,網上看到的代碼經測試沒有效果,如果有朋友知道方法的懇請您回復一下,謝謝。
代碼是網絡上看到的,測試整理了一下,感謝原作者。
?
?
-------------------------------------------------------------------------------------------
?
?
C#實現SQLSERVER2000數據庫備份還原的兩種方法 (帶進度條)
?
SQLDMO類的使用
分類:?C#2006-12-19 17:50?718人閱讀?評論(0)?收藏?舉報 sql serversqlservermicrosoftdatabasestring數據庫SQLDMO(SQL Distributed Management Objects,SQL分布式管理對象)封裝 Microsoft SQL Server 2000 數據庫中的對象。SQL-DMO 允許用支持自動化或 COM 的語言編寫應用程序,以管理 SQL Server 安裝的所有部分。SQL-DMO 是 SQL Server 2000 中的 SQL Server 企業管理器所使用的應用程序接口 (API);因此使用 SQL-DMO 的應用程序可以執行 SQL Server 企業管理器執行的所有功能。
SQL-DMO 用于必須包含 SQL Server 管理的任何自動化或 COM 應用程序,例如:?
1.封裝 SQL Server 作為自己的數據存儲并想盡量減少用戶的 SQL Server 管理任務的應用程序。
2.在程序本身并入了專門的管理邏輯的應用程序。
3.想在自己的用戶界面中集成 SQL Server 管理任務的應用程序。
SQLDMO對象來自SQLDMO.dll,SQLDMO.dll是隨SQL Server2000一起發布的。SQLDMO.dll自身是一個COM對象,因此,在你的.NET項目里必須先引用它。
{
????//引用SQLDMO.dll,SQLDMO由Microsoft?SQL?Server自帶的SQLDMO.dll提供,SQLDMO.dll是一個COM對象
????SQLDMO.Backup?backup=new?SQLDMO.BackupClass();
????SQLDMO.SQLServer?sqlserver=new?SQLDMO.SQLServerClass();
????sqlserver.LoginSecure=false;
????sqlserver.Connect("localhost","sa","1");
????backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
????backup.Database="userdb";
????backup.Files=@"E:/Project/meng/data/userdb.bak";
????backup.BackupSetName="userdb";
????backup.BackupSetDescription="數據庫備份";
????backup.Initialize=true;
????backup.SQLBackup(sqlserver);
}
privatevoidButton4_Click(objectsender,?System.EventArgs?e)
{
????SQLDMO.Restore?restore=new?SQLDMO.RestoreClass();
????SQLDMO.SQLServer?sqlserver=new?SQLDMO.SQLServerClass();
????sqlserver.LoginSecure=false;
????sqlserver.Connect("192.168.19.25","sa","sa");????????????restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
????restore.Database="userdb";
????restore.Files=@"E:/Project/meng/data/userdb.bak";
????restore.BackupSetName="userdb";????????????
????restore.FileNumber=1;
????restore.SQLRestore(sqlserver);
}
//得到指定SQL服務器所有數據庫的列表
publicArrayList?GetDataBaseList(stringServerName,stringUserName,stringPwd)
????????{
????????????ArrayList?list?=?new?ArrayList()?;?
????????????SQLDMO.Application?sqlApp?=?new?SQLDMO.Application()?;?
????????????SQLDMO.SQLServer?oServer?=?new?SQLDMO.SQLServer()?;?
????????????
????????????oServer.Connect(ServerName,UserName,Pwd);
????????????foreach(SQLDMO.Database?db?in?oServer.Databases)?
????????????{?
????????????????if((db.Name!=null)?&&?(db.SystemObject?==?false))
????????????????????list.Add(db.Name);
????????????}?????????????
????????????return?list?;?
????????}
????????//得到SQL服務器的列表
publicArrayList?GetSqlServerList()
????????{????
????????????ArrayList?list?=?new?ArrayList()?;?
????????????SQLDMO.Application?sqlApp?=?new?SQLDMO.Application();????????????
????????????SQLDMO.NameList?ServerName?=?sqlApp.ListAvailableSQLServers();????????????
????????????for(int?i=0;i<ServerName.Count;i++)
????????????{
????????????????list.Add(ServerName.Item(i+1));
????????????}????????????
????????????return?list;
????????}
轉載于:https://www.cnblogs.com/meimao5211/p/3339892.html
總結
以上是生活随笔為你收集整理的[整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DEDE利用Ajax实现调用当前登录会员
- 下一篇: 【Android】Handler详解