数据库备份
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015
作者:李成富
撰写时间:2019年7月12日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
对于任何数据库来说,备份都是非常重要的。数据库复制不能取代备份的作用。比如由于操作失误,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了,我们不能使用从数据库上的数据来恢复主数据库上的数据,只能通过备份进行误删除数据的恢复。
第一种:在数据库上单击要备份的数据,从右键菜单选择“任务”->“备份数据库”。
选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。选中它,确定,等待备份完成。完成后在指定的路径下将看到备份的文件,注意该文件默认没有后缀名。
第二种:想要通过SQL语句备份数据库数据,首先要知道备份的数据库名称,还有要备份到哪里(路径)等等一些数据,才可以进行备份。这里需要获取的数据有服务器名称、数据库名称、备份文件名称和文件存储路径。注意是保存为.bak文件。
首先输入内容,输完后,点击备份按钮,视图那边就会获取输入的服务器名称、数据库名称、备份文件名称和文件存储路径并且进行判断是否为空。
视图代码:
//备份按钮
$("#Backups").click(function () {
//服务器名称
var ServiceNametxt = $("#ServiceNametxt").val();
//数据库名称
var DataStoreroomNametxt = $("#DataStoreroomNametxt").val();
//备份文件名称
var FileNametxt = $("#FileNametxt").val();
//文件路径
var StrPathtxt = $("#StrPathtxt").val();
//判断获取的数据是否为空
if (ServiceNametxt != "" && DataStoreroomNametxt != "" && FileNametxt != "" && StrPathtxt != "") {
$.post("CopyDataStoreRoom", {
ServiceNametxt: ServiceNametxt,
DataStoreroomNametxt: DataStoreroomNametxt,
FileNametxt: FileNametxt,
StrPathtxt: StrPathtxt
}, function (data) {
if (data == "success") {
layer.alert("数据备份成功!", { skin: 'layui-layer-molv', title: '提示'})
}
else {
layer.alert("数据备份失败!", { skin: 'layui-layer-molv', title: '警告'});
}
});
}
else {
layer.alert("请完善数据再进行备份操作!", { skin: 'layui-layer-molv', title: '警告'});
}
});
如果不为空就执行控制器代码:
//获取服务器名称
StrServiceName = Request.Form["ServiceNametxt"].Trim();
//获取文件路径
StrPath = Request.Form["StrPathtxt"].Trim();
//获取数据库名称
string DBO = Request.Form["DataStoreroomNametxt"].Trim();
//获取备份文件名称
string NameFile = Request.Form["FileNametxt"].Trim();
int i = SQLBeiFengBak(DBO, NameFile);
return Json("success", JsonRequestBehavior.AllowGet);
int SQLBeiFengBak(string YYG, string NameFile)
{
//设置登录SQL服务器的IP,登录名,登录密码
string connString = @"Data Source='" + StrServiceName + "';Initial Catalog=HospitalManage; User ID=sa;Password=sa@123";
string strpath = "" + StrPath + "\\";
strpath = strpath.Substring(0, strpath.LastIndexOf("\\"));//截取路径
//设置数据库备份SQL字符串
string sqltxt =
@"BACKUP DATABASE " + YYG + " TO Disk='" + strpath + "\\" + NameFile + ".bak" + "'";
Connect = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sqltxt, Connect);
Connect.Open();
int StrReturn = Convert.ToInt32(cmd.ExecuteNonQuery());
Connect.Close();
Connect.Dispose();//释放数据库连接资源
return StrReturn;
}
效果图如下: