十年風雨路 · 一心鑄精品

接一個官網 留一件精品 做一個項目 樹一塊樣板

用ASP.NET還原與恢復Sql server

  上次做了個項目,涉及到數據庫的還原和恢復,到網上找了一下,是利用SQLDMO實現的,只要添加SQLDMO引用就好了,然后利用下邊的類的方法就可以實現了。   我把原作者的類擴充了一下,可以自動識別web.config里 的數據庫連接字符串,可以通過變量設置還原恢復的信息! ⌒枰⒁獾臅r還原,還原的時候問題最大了,有別的用戶使用數據庫的時候無法還原,解決辦法就是在MASTER數據庫中添加一個存儲過程:  create proc killspid (@dbname varchar(20))  as

時間:2013年01月15日 點擊量:

  上次做了個項目,涉及到數據庫的還原和恢復,到網上找了一下,是利用SQLDMO實現的,只要添加SQLDMO引用就好了,然后利用下邊的類的方法就可以實現了。

  我把原作者的類擴充了一下,可以自動識別web.config里 的數據庫連接字符串,可以通過變量設置還原恢復的信息。

  需要注意的時還原,還原的時候問題最大了,有別的用戶使用數據庫的時候無法還原,解決辦法就是在MASTER數據庫中添加一個存儲過程:

  create proc killspid (@dbname varchar(20))
  as begin declare @sql nvarchar(500)
  declare @spid int set @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''[email protected]+''')' exec (@sql)
  open getspid fetch next from getspid into @spid while @@fetch_status<>-1 begin exec('kill '[email protected]
  fetch next from getspid into @spid end close getspid deallocate getspid end GO

  在還原之前先執行這個存儲過程,需要傳遞dbname,就是你的數據庫的名字。下邊是類的原代碼:(web.config里的數據庫連接字符串是constr)

using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace web.base_class
...{
/**////
/// DbOper類,主要應用SQLDMO實現對Microsoft SQL Server數據庫的備份和恢復
///
public class DbOper
...{
private string server;
private string uid;
private string pwd;
private string database;
private string conn;
/**////
/// DbOper類的構造函數
///
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;
}
/**////
/// 數據庫備份
///
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();
}
}
///數據庫恢復 ///
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();
}
}
}
}

推薦案例

  • 成都森美啦園林綠化工程公

  • 四川尚恒科技有限公司

  • 成都九邦物流有限責任公司

  • 四川品睿餐飲管理有限公司

  • 美繪陶社陶藝手繪工作室-暖

  • 成都恩多施生物工程技術有

  • 汶川羌人土特產有限公司

  • 印刷設計公司網站No.3138

聯系我們 / CONTACT US

  • 四川省成都市金牛區五福橋東路229號龍湖北城天街28棟903室
  • 服務熱線:400-000-2367 028-86088588
  • 總機:028-62322623-0
  • 傳真:028-62322623-823

掃碼訪問冠辰手機網站

版權所有 Copyright © 2002-2019 四川冠辰科技開發有限公司  www.657502.live 保留所有權利  蜀ICP備11012605號

地址:四川省成都市金牛區五福橋東路229號龍湖北城天街28棟903室

服務熱線:400-000-2367 028-86088588 總機:028-62322623-0 傳真:028-62322623-823

云南快乐10分中奖规则 一分幸运农场怎么玩 江西铜业股票分析2018 广东11选5胆拖玩法 北京三快在线科技电话多少 配资炒股介绍 好用的股票配资平台 吉林快3开奖结果走势图 pk10网站 福彩排列七开奖结果 重庆幸运农场水果的代码数字 一分幸运农场怎么玩 江西铜业股票分析2018 广东11选5胆拖玩法 北京三快在线科技电话多少 配资炒股介绍 好用的股票配资平台 吉林快3开奖结果走势图 pk10网站 福彩排列七开奖结果 重庆幸运农场水果的代码数字