- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ASP.NET 恢复备份Sqlserver实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
最近做的一个项目因为服务器是在特殊机房上的,因为安全方面的考虑,不能给我们开发者提供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实现代码的文章就讲到这里了,如果你想了解更多关于ASP.NET 恢复备份Sqlserver实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如何启用 Mercurial(中央/主)存储库的自动(增量)备份? 我来自颠覆,在那里我能够制作一个提交 Hook ,将更改上传到 S3。 编辑: 如果这种策略对 Mercurial 没有意义,那么什
我想定期创建我的github存储库的备份。是否有一种快速的方法可以在不知道整个列表的情况下将它们全部拉出? 沃尔特 最佳答案 您可以通过GitHub的API获取整个列表: curl http://gi
我正在使用 flatpages在我在本地服务器上开发的站点中。我需要备份平面页面的数据以在最终服务器中使用它。有谁知道怎么做? 最佳答案 在您的本地服务器上运行: python manage.py d
我们已将应用服务升级到 S1,并希望设置自动备份。这是一个带有 SQL 数据库的 .net core 应用程序。对于数据库部分,我得到以下内容: No supported connection str
我们使用一些 阻止 blob 来存储一些持久资源,然后 用于存储事件数据的页面 blob 我们需要备份 blob,因此我尝试使用 AzCopy。它在我的开发机器上工作正常,但在其他慢速机器上失败,并出
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
我正在看这个例子 docker run --rm --volumes-from myredis -v $(pwd)/backup:/backup debian cp /data/dump.rdb /b
我们使用一些 阻止 blob 来存储一些持久资源,然后 用于存储事件数据的页面 blob 我们需要备份 blob,因此我尝试使用 AzCopy。它在我的开发机器上工作正常,但在其他慢速机器上失败,并出
我目前正在使用 Java,并且正在寻找一个程序,该程序可以在每次编译时保存我正在执行的操作的新版本。我不介意它是否不运行,我可以进去编辑类名,使其与 .java 名称匹配。由于我是一个初学者,我总是因
在 RabbitMQ 管理控制台中,出于导入和导出目的,我在概览页面底部看到了导入/导出定义链接。但是有了这个,我能够导出整套队列、交换等。 我有一个 MQ 服务器,其中包含多个应用程序的 MQ 设置
我在 Eclipse IDE 中做了一个 Maven 项目,但在某些时候,我决定以其他名称复制并粘贴工作区位置中的文件夹,以避免在迄今为止工作正常的原始项目中进行一些错误配置,但是,我在执行中遇到了问
有没有办法备份在任何给定元素上设置的所有事件? 背景故事:我有一些代码,当用户将鼠标悬停在某个图标上时(想想悬停帮助文本),会显示绝对定位的“弹出窗口”。如果用户将鼠标悬停在弹出窗口上,它会停留在周围
我需要将 MySQL 数据库移动到新位置。根据workbench,数据库大小只有200MB,但有些表有数百万行,报告索引和数GB的数据长度。结果,EXPORT 的大小为 15GB,导出 DB 并将其复
我有一个工作数据库 - 我想复制它的所有数据(甚至只是其中的 1 个表)并在磁盘上创建备份,并在另一个位置(不是同一台计算机)上创建一个“备份”数据库。另一台计算机未连接到互联网 我该怎么做? 最佳答
我有一个实时数据库,我想要做的是制作一份副本。我可以通过 SSH 和 phpMyAdmin 访问 MySQl。是否有一个命令可以在单个命令/操作中复制/备份数据库,而无需使用导出/导入? 谢谢 最佳答
我是 PostgreSQL 的新手,我正在寻找备份数据库的方法。我知道有 3 种方法 pg_dump,快照和复制以及使用 WAL。您建议使用哪一个来完整备份数据库?如果可能,请提供代码片段。 最佳答案
如何快速备份/恢复mysql数据库中的数据? 最佳答案 mysqldump命令行备份最快, (使用mysql命令行恢复,mysql -u #username# -p #database# < #dum
从管理的角度来看,我是 MySQL 的新手。 在过去的几个小时里,我一直在谷歌上搜索,但没有成功,我想知道是否有人可以为我指明正确的方向,让我知道要用谷歌搜索什么或提出建议。 基本上,我正在寻找有关如
我需要备份创建模式附带的数据库(转储)。使用 putty(通过 SSH)完成这项工作的命令行是什么?我研究并思考了这个命令,但它只执行表备份和数据。 mysqldump -h HOST -u LOGI
我正在尝试创建一个将整个/dev/sda1 备份到/mnt/Backup 的 bash 脚本 /dev/sda1 457G 3.5G 431G 1% / /dev/sdb1
我是一名优秀的程序员,十分优秀!