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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

DBController心得之一:利用DMO对象对SQL2005数据库进行Backup和restore的操作

發布時間:2025/3/21 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DBController心得之一:利用DMO对象对SQL2005数据库进行Backup和restore的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個禮拜沒有甚么事情,所以使用C#寫了一個對數據庫進行backup,restore的工具DBController,學到和溫習了不少東西: 1。對數據庫利用sqlDMO進行宏觀的操作。 2。如何利用notifyIcon控件編寫sys stray的代碼。 3。ListView的使用。 4。contextMenu的使用。 5。C#的委托機制,delegate 6。進度調progressBar的使用。 7。C#對windows 腳本,存儲過程的調用 。。。。。。。。 今天是第一篇筆記,當中DMO的使用主要來自 TerryLee的如何用SQLDMO在ASP.NET頁面下實現數據庫的備份與恢復 ? ?1。得到數據庫中tables的列表 ?/// <summary>
??/// get the database in SqlServer 遍歷數據庫,得到talbe的列表
??/// </summary>

??public string[] GetSqlServerDatabases()
??{
???try
???{
????SqlConnection mySqlCon =? new SqlConnection("server=" + myServer + ";uid=" + myUser + ";pwd=" + myPassword + ";database=" + "");
????SqlCommand mySqlCmd = new SqlCommand("sp_databases",mySqlCon);
????
????mySqlCon.Open();
??????????????? ArrayList myDataBaseList = new ArrayList();
??????????????? ///*****************************************used SqlDataReader method,readOnly
??????????????? //SqlDataReader mySqlRdr = mySqlCmd.ExecuteReader();
??????????????? clear the former string[]
??????????????? //while(mySqlRdr.Read())
??????????????? //{
??????????????? //??? myDataBaseList.Add(mySqlRdr["DATABASE_NAME"].ToString());
??????????????? //}
??????????????? //mySqlRdr.Close();
??????????????? //mySqlCon.Dispose();
??????????????? ///*****************************************used SqlDataReader method,readOnly
??????????????? SqlDataAdapter mySqlAdt = new SqlDataAdapter("sp_databases", mySqlCon);
??????????????? DataSet myDS = new DataSet();
??????????????? mySqlAdt.Fill(myDS,"DATABASE_NAME");
??????????????? mySqlCon.Close(); foreach (DataRow row in myDS.Tables["DATABASE_NAME"].Rows)
??????????????? {
??????????????????? myDataBaseList.Add(row[0].ToString());
??????????????? } String[] myArr = (String[]) myDataBaseList.ToArray( typeof( string ) );
????return myArr;//myDataBaseList;
???}
???catch(Exception e)
???{
??????????????? throw e;????
???}
??} 2。進行對數據庫的備份, ??????? /// <summary>
??????? /// Backup DB.
??????? /// </summary>

??????? public bool backupDB(string targetFile, string toBackup)
??{
??????????? SQLDMO.Backup objBackup = new SQLDMO.BackupClass();
??????????? SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
??????????? try
??????????? {
??????????????? oSQLServer.LoginSecure = false;
??????????????? oSQLServer.Connect(myServer, myUser, myPassword);
??????????????? objBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
??????????????? objBackup.Database = toBackup;????????????????????? //Gets or sets the database on which the backup or restore operation runs.
??????????????? objBackup.Files = targetFile;??????????????????????? //指定備份的物理文件
??????????????? objBackup.BackupSetName = toBackup;???????????????? //Gets or sets the name used to identify a particular backup set.
??????????????? objBackup.BackupSetDescription = "數據庫備份Backup DB";
??????????????? objBackup.Initialize = true;
??????????????? //回調Step進行進度條的處理
??????????????? SQLDMO.BackupSink_PercentCompleteEventHandler pcech = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
??????????????? objBackup.PercentComplete += pcech;
??????????????? objBackup.SQLBackup(oSQLServer);
??????????????? return true;
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? status = e.ToString();
??????????????? throw e;
??????????? }
??????????? finally
??????????? {
??????????????? oSQLServer.DisConnect();
??????????? }???
??} 3。進行數據庫的還原操作
??????? /// <summary>
??????? /// 進行數據庫的還原操作
??????? /// </summary>
??????? /// <param name="toRestore"></param>
??????? /// <param name="targetFile"></param>
??????? /// <returns></returns>

??public bool restoreDB(string toRestore,string targetFile)
??{
??????????? if (!File.Exists(targetFile))
??????????????? return false;
???????????? if(exepro(toRestore)!=true)//執行存儲過程
??????????? {
???????????????? return false;
???????????? }
??????????? else
??????????? {
??????????????? SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
??????????????? SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
??????????????? try
??????????????? {
??????????????????? exepro(toRestore);
??????????????????? oSQLServer.LoginSecure = false;
??????????????????? oSQLServer.Connect(myServer, myUser, myPassword);
??????????????????? oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
??????????????????? oRestore.Database = toRestore;
??????????????????? /**自行修改
??????????????????? oRestore.Files = targetFile;
??????????????????? oRestore.FileNumber = 1;
??????????????????? oRestore.ReplaceDatabase = true;
??????????????????? oRestore.SQLRestore(oSQLServer); return true;
??????????????? }
??????????????? catch(Exception e)
??????????????? {
??????????????????? throw e;
??????????????? }
??????????????? finally
??????????????? {
??????????????????? oSQLServer.DisConnect();
??????????????? }
??????????? }
??} 4。殺死調用當前庫的所有進程
??????? /// <summary>
??????? /// 殺死調用當前庫的所有進程
??????? /// </summary>
??????? /// <returns></returns>

??????? private bool exepro(string toRestore)
??????? { SqlConnection conn = new SqlConnection("server=" + myServer + ";uid=" + myUser + ";pwd=" + myPassword + ";database=" + "");
??????????? SqlCommand cmd = new SqlCommand("killspid",conn);
??????????? cmd.CommandType = CommandType.StoredProcedure;
??????????? cmd.Parameters.AddWithValue("@dbname", toRestore);
??????????? try
??????????? {
??????????????? conn.Open();
??????????????? cmd.ExecuteNonQuery();
??????????????? return true;
??????????? }
??????????? catch(Exception ex)
??????????? {
??????????????? throw ex;
??????????? }
??????????? finally
??????????? {
??????????????? conn.Close();
??????????? }
??????? } 5。當中的killspid為存儲過程,代碼如下: create proc p_killspid
@dbname varchar(200) --要關閉進程的數據庫名
as
declare @sql nvarchar(500)
declare @spid nvarchar(20) declare #tb cursor for
select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
open #tb
fetch next from #tb into @spid
while @@fetch_status=0
begin
exec('kill '+@spid)
fetch next from #tb into @spid
end
close #tb
deallocate #tb
go

轉載于:https://blog.51cto.com/chris/27949

總結

以上是生活随笔為你收集整理的DBController心得之一:利用DMO对象对SQL2005数据库进行Backup和restore的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色婷婷综合久久久久中文 | 凹凸国产熟女精品视频 | 亚洲图片欧美另类 | 日韩三级网 | 青青草国产在线 | 日韩在线一卡 | av在线不卡观看 | 精品一区二区久久久久久久网站 | 天天色天天干天天 | 日韩视频一区二区 | 欲求不满在线小早川怜子 | 久久综合亚洲精品 | 免费视频99| 在线播放少妇奶水过盛 | 国产不卡在线观看视频 | 久热最新| 久久国产精品久久久 | 国产乱国产乱300精品 | 国产最新网址 | 少妇又色又紧又黄又刺激免费 | 亚洲青涩| 97桃色| 午夜在线不卡 | 一级做a免费 | japanese中文字幕 | 日不卡| 鲁鲁狠狠狠7777一区二区 | 天天爽夜夜操 | 五月婷婷中文字幕 | 欧美a在线视频 | 高潮毛片7777777毛片 | 亚洲欧美日韩专区 | 国产黄色录相 | 国产chinese | 成在线人免费视频 | 久久亚洲天堂网 | 人人妻人人澡人人爽欧美一区 | 欧洲av网站| 日韩网红少妇无码视频香港 | 国产在线精品一区 | 黄色成年人 | 超碰三级| 波多野av在线 | 欧美一区二区国产 | 成人黄性视频 | 亚洲春色在线观看 | 最近最新中文字幕 | 涩涩综合 | 大陆av在线播放 | 日本人性爱视频 | 欧美一区二区三区免费观看 | 亚洲综合影院 | 蜜臀久久99精品久久久久久宅男 | 欧美片网站yy | 欧美极品少妇xxxxⅹ喷水 | 人妻一区二区三区四区五区 | 一区二区三区免费在线 | 免费av网站在线播放 | 成人免费毛片日本片视频 | 夜夜干天天操 | 奇米影视第四色888 免费观看a毛片 | 天天看黄色片 | 亚洲黄色av网站 | 激情爱爱网站 | 男人天堂a在线 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 国产极品美女高潮无套嗷嗷叫酒店 | 日本一区二区视频 | 日本黄色xxx | 欧美激情 一区 | 亚洲日日干 | 亚洲av日韩av高潮潮喷无码 | 老司机一区 | 免费观看国产精品视频 | 成年人免费在线观看 | 女子spa高潮呻吟抽搐 | 韩国一级片在线观看 | 爽爽影院免费观看 | 放荡的少妇2欧美版 | 国产jizz18女人高潮 | 京香julia在线观看 | 国产一级久久久久毛片精品 | 午夜网| 美女扒开腿让男生桶 | 欧美性猛交xxxx乱大交hd | 波多野结衣视频在线 | 日韩欧美第一区 | 高清一区二区三区四区五区 | 激情黄色小说视频 | 人人干干人人 | 特色黄色片| 日韩网站免费观看高清 | 国产精品一区二区三区在线看 | 人与拘一级a毛片 | jizz欧美| 精品国产乱码久久久久久久 | 久久尤物视频 | 91夜色视频| 草草影院第一页 |