亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:25:52
字體:
來源:轉載
供稿:網友
最近做的一個項目因為服務器是在特殊機房上的,因為安全方面的考慮,不能給我們開發者提供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 runat="server">
<div>
<table>
<tr>
<td>
<span>操 作 數 據 庫</span>
</td>
<td>
<asp:DropDownList runat="server" Font-Size="9pt">
</asp:DropDownList>
<asp:TextBox runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
<span>備份名稱和位置</span>
</td>
<td>
<asp:TextBox runat="server" Font-Size="9pt"></asp:TextBox>
</td>
<td>
<span>(如D:/beifen)</span>
</td>
</tr>
<tr>
<td colspan="3">
<asp:Button runat="server" Font-Size="9pt" Text="備份數據庫" />
</td>
</tr>
</table>
</div>
<div>
<table>
<tr>
<td>
<span>操 作 數 據 庫</span>
</td>
<td>
<asp:DropDownList runat="server" Font-Size="9pt">
</asp:DropDownList>
</td>
<td>
</td>
</tr>
<tr>
<td>
<span>操 作 數 據 庫</span>
</td>
<td>
<asp:FileUpload runat="server" Font-Size="9pt" />
</td>
<td>
</td>
</tr>
<tr>
<td colspan="3">
<asp:Button runat="server" Font-Size="9pt" Text="還原數據庫" />
<asp:Button runat="server" Font-Size="9pt" 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>待還原的數據庫名稱</param>
/// <param>帶還原的備份文件的完全路徑</param>
/// <param>恢復數據庫失敗的信息</param>
/// <param>是否強制還原(恢復),如果為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實現代碼

 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97人洗澡人人免费公开视频碰碰碰| 国产精品1234| 精品国产精品三级精品av网址| 国产精品91一区| 不卡毛片在线看| 亚洲成人精品久久久| 国产激情久久久久| 亚洲网址你懂得| 久久久91精品国产一区不卡| 亚洲天堂av图片| 国产精品一区二区三区免费视频| 午夜精品三级视频福利| 性色av一区二区三区红粉影视| 成人免费视频网址| 亚洲欧美国产精品专区久久| 亚洲欧美成人一区二区在线电影| 精品视频在线导航| 欧美午夜激情在线| 2025国产精品视频| 欧美成人免费播放| 亚洲美腿欧美激情另类| 久久久亚洲精品视频| 91精品中国老女人| 亚洲欧美中文日韩在线v日本| 国产高清在线不卡| 日本亚洲欧美三级| 国产精品丝袜一区二区三区| 精品精品国产国产自在线| 成人激情视频小说免费下载| 亚洲欧美日韩一区二区三区在线| 国产亚洲aⅴaaaaaa毛片| 国产91精品久| 亚洲肉体裸体xxxx137| 欧美激情va永久在线播放| 国产99久久精品一区二区永久免费| 欧美激情va永久在线播放| 欧美一乱一性一交一视频| 国产精彩精品视频| 九九热这里只有在线精品视| 91在线视频九色| 亚洲电影中文字幕| 国内精品在线一区| 精品亚洲aⅴ在线观看| 91久久夜色精品国产网站| 日韩中文字幕免费看| 国产精品麻豆va在线播放| 日韩av电影在线播放| 伊人伊成久久人综合网小说| 97在线观看免费| 国产精品99久久久久久久久| 久久高清视频免费| 国产噜噜噜噜久久久久久久久| 亚洲欧美日韩一区在线| 日本免费一区二区三区视频观看| 亚洲视屏在线播放| 中文字幕日韩欧美精品在线观看| 日韩视频免费在线观看| 欧美激情一级二级| 黄色精品在线看| 狠狠色香婷婷久久亚洲精品| 国产精品亚洲视频在线观看| 亚洲男人av电影| 久久免费观看视频| 日韩www在线| 日韩欧美亚洲一二三区| 97热在线精品视频在线观看| 欧美中文字幕在线| 日韩色av导航| 欧美日韩日本国产| 91精品国产色综合久久不卡98| 亚洲字幕一区二区| 欧美亚洲免费电影| 欧美巨猛xxxx猛交黑人97人| 国产精品91一区| 亚洲精品日韩激情在线电影| 日韩精品一区二区视频| 国内精品美女av在线播放| 日本不卡免费高清视频| 午夜精品久久久久久久白皮肤| 亚洲一区美女视频在线观看免费| 国产精品高潮在线| 色综合老司机第九色激情| 久久久久久久久久av| 色偷偷噜噜噜亚洲男人| 成人国产亚洲精品a区天堂华泰| 欧美性猛交xxxxx免费看| 欧美激情一二三| 欧美精品www| 亚洲电影中文字幕| 欧美性猛交xxxx富婆弯腰| 欧美日韩国产综合视频在线观看中文| 国产亚洲日本欧美韩国| 欧美韩国理论所午夜片917电影| 亚洲精品中文字| 亚洲区中文字幕| 亚洲91av视频| 欧美最猛性xxxxx免费| 亚洲人成电影网| 成人www视频在线观看| 亚洲视频自拍偷拍| 亚洲国产成人一区| 91久久在线观看| 欧美日韩美女在线观看| 成人黄色免费在线观看| 亚洲人成网站999久久久综合| 91久久久久久国产精品| 性欧美xxxx| 欧美日韩在线看| 国产欧美精品一区二区| 亚洲自拍小视频| 欧美寡妇偷汉性猛交| 国产精品综合久久久| 97视频在线免费观看| 国产精品海角社区在线观看| 成人亚洲欧美一区二区三区| 亚洲日本欧美日韩高观看| 国产福利精品在线| 欧美激情18p| 欧美国产中文字幕| 丁香五六月婷婷久久激情| **欧美日韩vr在线| 久久精品99国产精品酒店日本| 91九色单男在线观看| 亚洲香蕉成视频在线观看| 久久久久五月天| 一本色道久久88亚洲综合88| 成人午夜激情免费视频| 国产亚洲a∨片在线观看| 日韩美女视频中文字幕| 欧美电影免费观看电视剧大全| 97国产suv精品一区二区62| 在线观看欧美成人| 日韩欧美国产中文字幕| 精品视频www| 国产情人节一区| 亚洲一区二区久久久| 亚洲女人天堂成人av在线| 4k岛国日韩精品**专区| 国产精品偷伦免费视频观看的| 欧洲美女7788成人免费视频| 91精品国产综合久久久久久蜜臀| 51色欧美片视频在线观看| 欧美色videos| 国产盗摄xxxx视频xxx69| 国产日韩在线看片| 日韩在线观看网址| 欧美日韩美女在线观看| 91高清视频免费观看| 91久久综合亚洲鲁鲁五月天| 久久九九全国免费精品观看| 国产精品扒开腿做| 欧美午夜精品久久久久久人妖| 日韩69视频在线观看| 成人久久一区二区| 国产91ⅴ在线精品免费观看| 精品免费在线视频| 亚洲一区第一页| 97成人精品区在线播放| 91精品视频网站| 久久69精品久久久久久国产越南| 日韩欧美亚洲一二三区| 日产精品久久久一区二区福利| 国产精品美女无圣光视频| 精品久久久国产|