日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

[整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...

發布時間:2025/6/17 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [整理] 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數據庫備份還原的兩種方法 (帶進度條)

  • C#實現SQLSERVER2000數據庫備份還原的兩種方法
  • :方法一(不使用SQLDMO):
  • ///
  • ///備份方法
  • ///
  • SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;");
  • SqlCommandcmdBK=newSqlCommand();
  • cmdBK.CommandType=CommandType.Text;
  • cmdBK.Connection=conn;
  • cmdBK.CommandText=@"backupdatabasetesttodisk='C:/ba'withinit";
  • try
  • {
  • conn.Open();
  • cmdBK.ExecuteNonQuery();
  • MessageBox.Show("Backupsuccessed.");
  • }
  • catch(Exceptionex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • finally
  • {
  • conn.Close();
  • conn.Dispose();
  • }
  • ///
  • ///還原方法
  • ///
  • SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
  • conn.Open();
  • //KILLDataBaseProcess
  • SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
  • SqlDataReaderdr;
  • dr=cmd.ExecuteReader();
  • ArrayListlist=newArrayList();
  • while(dr.Read())
  • {
  • list.Add(dr.GetInt16(0));
  • }
  • dr.Close();
  • for(inti=0;i<list.Count;i++)
  • {
  • cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
  • cmd.ExecuteNonQuery();
  • }
  • SqlCommandcmdRT=newSqlCommand();
  • cmdRT.CommandType=CommandType.Text;
  • cmdRT.Connection=conn;
  • cmdRT.CommandText=@"restoredatabasetestfromdisk='C:/ba'";
  • try
  • {
  • cmdRT.ExecuteNonQuery();
  • MessageBox.Show("Restoresuccessed.");
  • }
  • catch(Exceptionex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • finally
  • {
  • conn.Close();
  • }
  • 方法二(使用SQLDMO):
  • ///
  • ///備份方法
  • ///
  • SQLDMO.Backupbackup=newSQLDMO.BackupClass();
  • SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
  • //顯示進度條
  • SQLDMO.BackupSink_PercentCompleteEventHandlerprogress=newSQLDMO.BackupSink_PercentCompleteEventHandler(Step);
  • backup.PercentComplete+=progress;
  • try
  • {
  • server.LoginSecure=false;
  • server.Connect(".","sa","sa");
  • backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
  • backup.Database="test";
  • backup.Files=@"D:/test/myProg/backupTest";
  • backup.BackupSetName="test";
  • backup.BackupSetDescription="Backupthedatabaseoftest";
  • backup.Initialize=true;
  • backup.SQLBackup(server);
  • MessageBox.Show("Backupsuccessed.");
  • }
  • catch(Exceptionex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • finally
  • {
  • server.DisConnect();
  • }
  • this.pbDB.Value=0;
  • ///
  • ///還原方法
  • ///
  • SQLDMO.Restorerestore=newSQLDMO.RestoreClass();
  • SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
  • //顯示進度條
  • SQLDMO.RestoreSink_PercentCompleteEventHandlerprogress=newSQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
  • restore.PercentComplete+=progress;
  • //KILLDataBaseProcess
  • SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
  • conn.Open();
  • SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
  • SqlDataReaderdr;
  • dr=cmd.ExecuteReader();
  • ArrayListlist=newArrayList();
  • while(dr.Read())
  • {
  • list.Add(dr.GetInt16(0));
  • }
  • dr.Close();
  • for(inti=0;i<list.Count;i++)
  • {
  • cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
  • cmd.ExecuteNonQuery();
  • }
  • conn.Close();
  • try
  • {
  • server.LoginSecure=false;
  • server.Connect(".","sa","sa");
  • restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
  • restore.Database="test";
  • restore.Files=@"D:/test/myProg/backupTest";
  • restore.FileNumber=1;
  • restore.ReplaceDatabase=true;
  • restore.SQLRestore(server);
  • MessageBox.Show("Restoresuccessed.");
  • }
  • catch(Exceptionex)
  • {
  • MessageBox.Show(ex.Message);
  • }
  • finally
  • {
  • server.DisConnect();
  • }
  • this.pbDB.Value=0;
  • ?

    SQLDMO類的使用

    分類:?C#?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項目里必須先引用它。


    privatevoidButton3_Click(objectsender,?System.EventArgs?e)
    {
    ????//引用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数据库备份还原的两种方法 (带进度条)...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。