一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET 恢復備份Sqlserver實現代碼

ASP.NET 恢復備份Sqlserver實現代碼

2019-09-03 11:48ASP.NET之家 ASP.NET教程

在線恢復和備份SQL Server的代碼,需要的朋友可以參考下。

最近做的一個項目因為服務器是在特殊機房上的,因為安全方面的考慮,不能給我們開發者提供FTP服務,所以每次更新版本都得自己跑一趟,而他的機房有很遠,所以我一直想能不能開發一個維護版本的系統呢,對數據庫和代碼進行在線更新,就不用自己跑了,于是就有了下面的嘗試,在線恢復和備份SQL Server: 

前臺代碼: 

復制代碼代碼如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SqlDbMgmt.aspx.cs" Inherits="SysSourceMgmt.SqlDbMgmt" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<table> 
<tr> 
<td style="width: 100px"> 
<span style="font-size: 9pt">操 作 數 據 庫</span> 
</td> 
<td> 
<asp:DropDownList ID="DropDownList1" runat="server" Font-Size="9pt" Width="124px"> 
</asp:DropDownList> 
<asp:TextBox ID="txtDbName" runat="server"></asp:TextBox> 
</td> 
<td style="width: 100px"> 
</td> 
</tr> 
<tr> 
<td style="width: 100px"> 
<span style="font-size: 9pt">備份名稱和位置</span> 
</td> 
<td style="width: 100px"> 
<asp:TextBox ID="TextBox1" runat="server" Font-Size="9pt" Width="117px"></asp:TextBox> 
</td> 
<td style="width: 100px"> 
<span style="font-size: 9pt; color: #ff3300">(如D:\beifen)</span> 
</td> 
</tr> 
<tr> 
<td colspan="3"> 
<asp:Button ID="Button1" runat="server" Font-Size="9pt" OnClick="Button1_Click" Text="備份數據庫" /> 
</td> 
</tr> 
</table> 
</div> 
<div style="width: 100%; height: 100px"> 
<table> 
<tr> 
<td style="width: 100px; height: 21px"> 
<span style="font-size: 9pt">操 作 數 據 庫</span> 
</td> 
<td> 
<asp:DropDownList ID="DropDownList2" runat="server" Font-Size="9pt" Width="124px"> 
</asp:DropDownList> 
</td> 
<td style="width: 100px; height: 21px"> 
</td> 
</tr> 
<tr> 
<td style="width: 100px"> 
<span style="font-size: 9pt">操 作 數 據 庫</span> 
</td> 
<td style="width: 100px"> 
<asp:FileUpload ID="FileUpload1" runat="server" Font-Size="9pt" Width="190px" /> 
</td> 
<td style="width: 100px"> 
</td> 
</tr> 
<tr> 
<td colspan="3"> 
<asp:Button ID="Button2" runat="server" Font-Size="9pt" OnClick="Button2_Click" Text="還原數據庫" /> 
<asp:Button ID="Button3" runat="server" Font-Size="9pt" OnClick="Button3_Click" Text="強制還原數據庫" /> 
</td> 
</tr> 
</table> 
</div> 
</form> 
</body> 
</html> 


后臺: 

復制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.IO; 
using System.Data; 
using System.Diagnostics; 
namespace SysSourceMgmt 

public partial class SqlDbMgmt : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

if (!IsPostBack) 

try 

string SqlStr1 = "Server=(local);DataBase=master;Uid=sa;Pwd="; 
string SqlStr2 = "Exec sp_helpdb"; 
SqlConnection con = new SqlConnection(SqlStr1); 
con.Open(); 
SqlCommand com = new SqlCommand(SqlStr2, con); 
SqlDataReader dr = com.ExecuteReader(); 
this.DropDownList1.DataSource = dr; 
this.DropDownList1.DataTextField = "name"; 
this.DropDownList1.DataBind(); 
dr.Close(); 
con.Close(); 
SqlStr1 = "Server=(local);DataBase=master;Uid=sa;Pwd="; 
SqlStr2 = "Exec sp_helpdb"; 
con = new SqlConnection(SqlStr1); 
con.Open(); 
com = new SqlCommand(SqlStr2, con); 
dr = com.ExecuteReader(); 
this.DropDownList1.DataSource = dr; 
this.DropDownList1.DataTextField = "name"; 
this.DropDownList1.DataBind(); 
dr.Close(); 
con.Close(); 

catch (Exception) 




protected void Button1_Click(object sender, EventArgs e) 

string dbName = string.Empty; 
if (DropDownList1.Items.Count != 0) 

dbName = DropDownList1.SelectedValue.Trim(); 

else 

dbName = txtDbName.Text.Trim(); 

string SqlStr1 = "Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True"; 
string SqlStr2 = "backup database " + dbName + " to disk='" + this.TextBox1.Text.Trim() + ".bak'"; 
SqlConnection con = new SqlConnection(SqlStr1); 
con.Open(); 
try 

if (File.Exists(this.TextBox1.Text.Trim())) 

Response.Write("<script language=javascript>alert('此文件已存在,請從新輸入!');location='Default.aspx'</script>"); 
return; 

SqlCommand com = new SqlCommand(SqlStr2, con); 
com.ExecuteNonQuery(); 
Response.Write("<script language=javascript>alert('備份數據成功!');'</script>"); 

catch (Exception error) 

Response.Write(error.Message); 
Response.Write("<script language=javascript>alert('備份數據失敗!')</script>"); 

finally 

con.Close(); 


protected void Button2_Click(object sender, EventArgs e) 

string path = this.FileUpload1.PostedFile.FileName; //獲得備份路徑及數據庫名稱 
string dbName = string.Empty; 
if (DropDownList1.Items.Count != 0) 

dbName = DropDownList1.SelectedValue.Trim(); 

else 

dbName = txtDbName.Text.Trim(); 

string SqlStr1 = "Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True"; 
string SqlStr2 = @"use master restore database " + dbName + " from disk='" + path + "'"; 
SqlConnection con = new SqlConnection(SqlStr1); 
con.Open(); 
try 

SqlCommand com = new SqlCommand(SqlStr2, con); 
com.ExecuteNonQuery(); 
Response.Write("<script language=javascript>alert('還原數據成功!');'</script>"); 

catch (Exception error) 

Response.Write(error.Message); 
Response.Write("<script language=javascript>alert('還原數據失敗!')</script>"); 
txtDbName.Text = SqlStr2; 

finally 

con.Close(); 


/// <summary> 
/// 恢復數據庫,可選擇是否可以強制還原(即在其他人在用的時候,依然可以還原) 
/// </summary> 
/// <param name="databasename">待還原的數據庫名稱</param> 
/// <param name="databasefile">帶還原的備份文件的完全路徑</param> 
/// <param name="errormessage">恢復數據庫失敗的信息</param> 
/// <param name="forceRestore">是否強制還原(恢復),如果為TRUE,則exec killspid '數據庫名' 結束此數據庫的進程,這樣才能還原數據庫</param> 
/// <returns></returns> 
public bool RestoreDataBase(string databasename, string databasefile, ref string returnMessage, bool forceRestore, SqlConnection conn) 

bool success = true; 
string path = databasefile; 
string dbname = databasename; 
string restoreSql = "use master;"; 
if (forceRestore)//如果強制回復 
restoreSql += string.Format("use master exec killspid '{0}';", databasename); 
restoreSql += "restore database @dbname from disk = @path;"; 
SqlCommand myCommand = new SqlCommand(restoreSql, conn); 
myCommand.Parameters.Add("@dbname", SqlDbType.Char); 
myCommand.Parameters["@dbname"].Value = dbname; 
myCommand.Parameters.Add("@path", SqlDbType.Char); 
myCommand.Parameters["@path"].Value = path; 
Response.Write(restoreSql); 
try 

myCommand.Connection.Open(); 
myCommand.ExecuteNonQuery(); 
returnMessage = "還原成功"; 

catch (Exception ex) 

returnMessage = ex.Message; 
success = false; 

finally 

myCommand.Connection.Close(); 

return success; 

protected void Button3_Click(object sender, EventArgs e) 

string path = this.FileUpload1.PostedFile.FileName; //獲得備份路徑及數據庫名稱 
string dbName = string.Empty; 
if (DropDownList1.Items.Count != 0) 

dbName = DropDownList1.SelectedValue.Trim(); 

else 

dbName = txtDbName.Text.Trim(); 

string returnMessage = string.Empty; 
string SqlStr1 = "Data Source=.\\sqlexpress;Initial Catalog='" + dbName + "';Integrated Security=True"; 
SqlConnection con = new SqlConnection(SqlStr1); 
RestoreDataBase(txtDbName.Text, path, ref returnMessage, true,con); 
Response.Write(returnMessage); 


 

效果圖:

ASP.NET 恢復備份Sqlserver實現代碼

 

經過試驗,大體完成了我需要的功能,具體優化后期進行中。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 大学生按摩黄a级中文片 | 国产在线麻豆波多野结衣 | 三级aaa黄特色 | 欧美日韩专区国产精品 | 东方影视欧美天天影院 | 久久久久久久99精品免费观看 | 国产91一区二区在线播放不卡 | 成人久久18免费网站入口 | 成年人免费看的视频 | 美女胸又大又黄又www小说 | 大胆国模一区二区三区伊人 | 欧美成人免费观看bbb | 国产精品一二三 | 欧美三级一区二区 | 欧美成人免费草草影院视频 | 国产无限免费观看黄网站 | 青草视频在线观看免费视频 | 欧美视频黑鬼大战白妞 | 视频一区二区三区在线 | 香蕉视频在线观看网站 | 很黄的孕妇a级黄毛片 | 亚洲国产欧美在线成人aaaa | 办公室大战秘书呻吟 | 色综合久久综合网欧美综合网 | 性伴交换多p | 成人在线视频在线观看 | 精品推荐国产麻豆剧传媒 | 久久九九亚洲精品 | 特级淫片大乳女子高清视频 | 99热6这里只有精品 99欧美精品 | 青青草原免费在线视频 | 国产精品视频播放 | 国产女同精品 | 香蕉eeww99国产精品 | 亚欧洲乱码视频一二三区 | 1717she精品视频在线观看 | 日本不卡1卡2卡三卡网站二百 | 狠狠干狠狠插 | 久久一本岛在免费线观看2020 | 黑人巨鞭大战白妞10级 | 日本小视频网站 |