国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用asp.net還原與恢復sqlserver數據庫

2019-11-17 01:31:42
字體:
來源:轉載
供稿:網友
asp.net還原與恢復sqlserver數據庫

上次做了個項目,涉及到數據庫的還原和恢復,到網上找了一下,是利用SQLDMO實現的,只要添加SQLDMO引用就好了,然后利用下邊的類的方法就可以實現了。我把原作者的類擴充了一下,可以自動識別web.config里 的數據庫連接字符串,可以通過變量設置還原恢復的信息。需要注意的時還原,還原的時候問題最大了,有別的用戶使用數據庫的時候無法還原,解決辦法就是在MASTER數據庫中添加一個存儲過程:create PRoc killspid (@dbname varchar(20))asbegindeclare @sql nvarchar(500)declare @spid intset @sql='declare getspid cursor forselect spid from sysprocesses where dbid=db_id('''+@dbname+''')'exec (@sql)open getspidfetch next from getspid into @spidwhile @@fetch_status<>-1beginexec('kill '+@spid)fetch next from getspid into @spidendclose getspiddeallocate getspidendGO在還原之前先執行這個存儲過程,需要傳遞dbname,就是你的數據庫的名字。下邊是類的原代碼:(web.config里的數據庫連接字符串是constr)

using System;using System.Configuration;using System.Data.SqlClient;using System.Data;namespace web.base_class{     /// <summary>     /// DbOper類,主要應用SQLDMO實現對Microsoft SQL Server數據庫的備份和恢復     /// </summary>     public class DbOper     {          private string server;          private string uid;          private string pwd;          private string database;          private string conn;         /// <summary>         /// DbOper類的構造函數         /// </summary>         public DbOper()         {              conn=System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();              server=cut(conn,"server=",";");              uid=cut(conn,"uid=",";");              pwd=cut(conn,"pwd=",";");              database=cut(conn,"database=",";");         }         public string cut(string str,string bg,string ed)         {              string sub;              sub=str.Substring(str.IndexOf(bg)+bg.Length);              sub=sub.Substring(0,sub.IndexOf(";"));              return sub;         }         /// <summary>         /// 數據庫備份         /// </summary>         public  bool DbBackup(string url)         {              SQLDMO.Backup oBackup = new SQLDMO.BackupClass();              SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();              try              {                   oSQLServer.LoginSecure = false;                   oSQLServer.Connect(server,uid, pwd);                   oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;                   oBackup.Database = database;                   oBackup.Files = url;//"d:/Northwind.bak";                   oBackup.BackupSetName = database;                   oBackup.BackupSetDescription = "數據庫備份";                   oBackup.Initialize = true;                   oBackup.SQLBackup(oSQLServer);                   return true;              }              catch              {                   return false;                   throw;              }              finally              {                   oSQLServer.DisConnect();              }         }         /// <summary>         /// 數據庫恢復         /// </summary>         public string DbRestore(string url)         {              if(exepro()!=true)//執行存儲過程              {                   return "操作失敗";              }              else              {                   SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();                   SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();                   try                   {                        oSQLServer.LoginSecure = false;                        oSQLServer.Connect(server, uid, pwd);                        oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;                        oRestore.Database = database;                        oRestore.Files = url;//@"d:/Northwind.bak";                        oRestore.FileNumber = 1;                        oRestore.ReplaceDatabase = true;                        oRestore.SQLRestore(oSQLServer);                       return "ok";                   }                   catch(Exception e)                   {                       return "恢復數據庫失敗";                       throw;                   }                   finally                   {                        oSQLServer.DisConnect();                   }              }         }          private bool exepro()         {              SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");              SqlCommand cmd = new SqlCommand("killspid",conn1);              cmd.CommandType = CommandType.StoredProcedure;              cmd.Parameters.Add("@dbname","port");              try              {                   conn1.Open();                   cmd.ExecuteNonQuery();                   return true;              }              catch(Exception ex)              {                   return false;              }              finally              {                   conn1.Close();              }         }     }} 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高平市| 天气| 绥江县| 包头市| 本溪市| 灵宝市| 余庆县| 汉源县| 瑞安市| 芒康县| 黄陵县| 邛崃市| 哈尔滨市| 汕尾市| 汝城县| 六枝特区| 寿宁县| 灵璧县| 台湾省| 巍山| 普兰县| 福建省| 拜泉县| 昌江| 肇庆市| 贵南县| 常德市| 松原市| 安仁县| 淮北市| 宾阳县| 麻栗坡县| 丰城市| 涞源县| 彰化市| 汉阴县| 灵石县| 南靖县| 上饶县| 城口县| 循化|