2022年aaC#数据库备份与恢复[借 .pdf

上传人:C****o 文档编号:33387744 上传时间:2022-08-10 格式:PDF 页数:6 大小:67.30KB
返回 下载 相关 举报
2022年aaC#数据库备份与恢复[借 .pdf_第1页
第1页 / 共6页
2022年aaC#数据库备份与恢复[借 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年aaC#数据库备份与恢复[借 .pdf》由会员分享,可在线阅读,更多相关《2022年aaC#数据库备份与恢复[借 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C#实现 SQL 数据库备份与恢复2007-08-29 10:25 2777人阅读评论 (4) 收藏举报有两种方法,都是保存为.bak 文件。一种是直接用Sql 语句执行,另一种是通过引用SQL Server 的 SQLDMO组件来实现 : 1. 通过执行 Sql 语句来实现注意, 用 Sql 语句实现备份与还原操作时,最好不要使用需要备份或还原的数据库连接,而使用 master ,否则可能会出现如下三个问题:(1)超时时间已到。在操作完成之前超时时间已过或服务器未响应。(2) 在向服务器发送请求时发生传输级错误。(provider: 共享内存提供程序 ,error:0- 系统无法打开文件。)

2、 (3) 从服务器接收结果时发生传输级错误。(provider:共享内存提供程序,error:0 - 系统无法打开文件。) ,如果一定要用这个连接的话,要注意在执行Sql 语句前加个Sql 语句: use master,这样可能会解决以上问题。(1)数据备份语句:backup database 数据库名to disk=保存路径 /dbName.bak(2)数据恢复语句:restore database 数据库名from disk=保存路径/dbName.bakWITH MOVE dbName_Data TO c:/tcomcrm20041217.mdf, -数据文件还原后存放的新位置MOVE

3、dbName_Log TO c:/comcrm20041217.ldf - 日志文件还原后存放的新位置关于这两个语句还有更详细的介绍:http:/ void btnBak_Click(object sender, EventArgs e) /备份 string saveAway = this.tbxBakLoad.Text.ToString().Trim(); string cmdText = backup database + System.Configuration.ConfigurationSettings.AppSettingsdbName + to disk= + saveAway

4、+ ; BakReductSql(cmdText,true); private void btnReduct_Click(object sender, EventArgs e) /恢复 string openAway = this.tbxReductLoad.Text.ToString().Trim();/读取文件的路径string cmdText = restore database + System.Configuration.ConfigurationSettings.AppSettingsdbName + from disk= + openAway + ; 名师资料总结 - - -精品

5、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - BakReductSql(cmdText,false); / / 对数据库的备份和恢复操作,Sql 语句实现/ / 实现备份或恢复的Sql 语句 / 该操作是否为备份操作,是为true 否,为 false private void BakReductSql(string cmdText,bool isBak) SqlCommand cmdBakRst = new SqlCommand(); SqlConnec

6、tion conn = new SqlConnection(Data Source=.;Initial Catalog=master;uid=sa;pwd=;); try conn.Open(); cmdBakRst.Connection = conn; cmdBakRst.CommandType = CommandType.Text; if (!isBak) /如果是恢复操作 string setOffline = Alter database GroupMessage Set Offline With rollback immediate ; string setOnline = Alte

7、r database GroupMessage Set Online With Rollback immediate; cmdBakRst.CommandText = setOffline + cmdText + setOnline; else cmdBakRst.CommandText = cmdText; cmdBakRst.ExecuteNonQuery(); if (!isBak) MessageBox.Show(恭喜你,数据成功恢复为所选文档的状态!, 系统消息); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师

8、精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - else MessageBox.Show(恭喜,你已经成功备份当前数据!, 系统消息 ); catch (SqlException sexc) MessageBox.Show(失败,可能是对数据库操作失败,原因: + sexc, 数据库错误消息 ); catch (Exception ex) MessageBox.Show(对不起,操作失败,可能原因: + ex, 系统消息 ); finally cmdBakRst.Dispose(); conn.Close(); conn.Dispose();

9、另外, 如果出现: “ 尚未备份数据库的日志尾部” 错误,可以在还原语句后加上With Replace 或 With stopat2.用 SQLDMO实现(下面代码引用别人的)/数据库备份 string backaway =textbox1.Text.Trim(); SQLDMO.Backup oBackup = new SQLDMO.BackupClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try oSQLServer.LoginSecure = false; / 下面设置登录sql 服务器的ip,登录

10、名 ,登录密码 oSQLServer.Connect(serverip, serverid, serverpwd); oBackup.Action = 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - /下面两句是显示进度条的状态 SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHan

11、dler(Step2); oBackup.PercentComplete += pceh; / 数据库名称 : oBackup.Database = k2; / 备份的路径 oBackup.Files = backaway; / 备份的文件名 oBackup.BackupSetName = k2; oBackup.BackupSetDescription = 数据库备份 ; oBackup.Initialize = true; oBackup.SQLBackup(oSQLServer); MessageBox.Show(备份成功! , 提示 ); catch MessageBox.Show(备

12、份失败! , 提示 ); finally oSQLServer.DisConnect(); /数据库恢复 / 获取恢复的路径 string dbaway = textbox2.Text.Trim(); SQLDMO.Restore restore = new SQLDMO.RestoreClass(); SQLDMO.SQLServer server = new SQLDMO.SQLServerClass(); server.Connect(serverip, serverid, serverpwd); /KILL DataBase Process conn = new 工资管理系统 .CCU

13、tility.connstring(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - conn.DBOpen(); SqlCommand cmd = new SqlCommand(use master Select spid FROM sysprocesses ,sysdatabases Where sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name=k2, c

14、onn.Connection); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read() server.KillProcess(Convert.ToInt32(dr0.ToString(); dr.Close(); conn.DBClose(); try restore.Action = 0; SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step); restore.Per

15、centComplete += pceh; restore.Database = k2; restore.Files = dbaway; restore.ReplaceDatabase = true; restore.SQLRestore(server); MessageBox.Show(数据库恢复成功!); catch (Exception ex) MessageBox.Show(ex.Message); finally server.DisConnect(); 恢复相关的参数和备份相同,不再解释 ,自己看一下 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

16、 - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 上面两个函数调用到了更改进度条的两个函数: private void Step2(string message, int percent) progressBar2.Value = percent; private void Step(string message, int percent) progressBar1.Value = percent; setp 对应备份 ,setp2 对应恢复 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁