Winform的代码,最好是在数据所在电脑上运行代码,不然会因为权限问题导致失败。

数据库备份:

  1. SqlConnection con = new SqlConnection("Data Source=.;;Initial Catalog=DB_Test;User ID=sa;Password=sa");
  2. string sql = "backup database DB_Test to disk= 'c:\\aVb.bak'";
  3. con.Open();
  4. if (!File.Exists("c:\\aa.bak"))
  5. {
  6. SqlCommand com = new SqlCommand(sql, con);
  7. com.ExecuteNonQuery(); //执行sql语句
  8. lblmessage.Text = "系统信息:备份成功!";
  9. }
  10. else
  11. {
  12. lblmessage.Text = "系统信息:文件已存在!";
  13. }

数据库还原:

  1. //引用SQLDMO.dll,SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,SQLDMO.dll是一个COM对象
  2. SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
  3. try
  4. {
  5. svr.Connect("192.168.89.20", "sa", "Aa123456");
  6. //取得所有的进程列表
  7. SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
  8. int iColPIDNum = -1;
  9. int iColDbName = -1;
  10. //找到和要恢复数据库相关的进程
  11. for (int i = 1; i <= qr.Columns; i++)
  12. {
  13. string strName = qr.get_ColumnName(i);
  14. if (strName.ToUpper().Trim() == "SPID")
  15. {
  16. iColPIDNum = i;
  17. }
  18. else if (strName.ToUpper().Trim() == "DBNAME")
  19. {
  20. iColDbName = i;
  21. }
  22. if (iColPIDNum != -1 && iColDbName != -1)
  23. break;
  24. }
  25. //将相关进程杀死
  26. for (int i = 1; i <= qr.Rows; i++)
  27. {
  28. int lPID = qr.GetColumnLong(i, iColPIDNum);
  29. string strDBName = qr.GetColumnString(i, iColDbName);
  30. if (strDBName.ToUpper() == strDbName.ToUpper())
  31. svr.KillProcess(lPID);
  32. }
  33.  
  34. SQLDMO.Restore res = new SQLDMO.RestoreClass();
  35.  
  36. res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
  37. res.Files = strFileName;
  38.  
  39. res.Database = strDbName;
  40. res.FileNumber = 1;
  41.  
  42. res.ReplaceDatabase = true;
  43. res.SQLRestore(svr);
  44.  
  45. return true;
  46. }
  47. catch (Exception err)
  48. {
  49. //throw (new Exception("" + err.Message));
  50. MessageBox.Show("恢复数据库失败,请关闭所有和该数据库连接的程序!" + err.Message);
  51. return false;
  52. }
  53. finally
  54. {
  55. svr.DisConnect();
  56. }

  

C# 还原SQL数据库(非存储过程方式)的更多相关文章

  1. sql数据库的链接方式

    今天看见了一个数据库的链接方法,给转载了,记得我刚刚学DAO的时候老是要记载这些东西,所以就上博客园上面看了看,就转过来了... MySQL: String Driver="com.mysq ...

  2. SQL数据库—<6>存储过程

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...

  3. SQL 数据库事务 存储过程练习

    数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. ...

  4. SQL数据库增量备份还原方式

    SQLSERVER2008的备份还原最基本的方式自然是完整备份,然后完整还原即可. 但是如果遇到数据库文件很大,数据量很大,备份和还原需要花费不少时间的时候, 数据库的差异备份自然就成为考虑的备份方案 ...

  5. C#.NET SQL数据库备份与还原解决方案

    C#.NET SQL数据库备份与还原解决方案http://www.csframework.com/archive/1/arc-1-20110924-1841.htm 开发框架V2.2(快速开发版)系统 ...

  6. 存储过程学习笔记(SQL数据库

    一.   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程 ...

  7. SQL数据库问题 解释一下下面的代码 sql 存储过程学习

    SQL数据库问题 解释一下下面的代码 2008-08-13 11:30wssqyl2000 | 分类:数据库DB | 浏览1154次 use mastergocreate proc killspid( ...

  8. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  9. ADO.NET 连接方式和非链接方式访问数据库

    一.//连接方式访问数据库的主要步骤(利用DataReader对象实现数据库连接模式) 1.创建连接对象(连接字符串) SqlConnection con = new SqlConnection(Co ...

随机推荐

  1. 【转载】Java StringBuffer与StringBuider

    本文转载微学苑java基础教程,原文地址链接:http://www.weixueyuan.net/view/6318.html String 的值是不可变的,每次对String的操作都会生成新的Str ...

  2. GitHub——如何更新已经fork的代码

    github上有个很方便的功能叫fork,将别人的工程一键复制到自己账号下.这个功能很方便,但有点不足的是,当源项目更新后,你fork的分支并不会一起更新,需要自己手动去更新.下面记录下网上找到的更新 ...

  3. 【基础教程】推荐10+必备的 WordPress 常用插件

    1.Akismet Akismet 是 WordPress 官方推荐的一款 WordPress 防垃圾评论插件,也是默认已安装的插件. 2.WP-Postviews 最好的最流行的WordPress浏 ...

  4. django初探

    如果是自己建站耍的话,还是用Php方便,毕竟Php服务器便宜又到处都是. 但是python毕竟是一个新鲜的东西,特别是django,以前一直东python的语法,而且是我最早学习的语言之一,但是一直停 ...

  5. Andriod手势密码破解

    ★ 引子 之前在Freebuf上看到一片文章讲Andriod的手势密码加密原理,觉得比较有意思,所以就写了一个小程序试试. ★ 原理            Android的手势密码加密原理很简单: 先 ...

  6. AudioServicesPlaySystemSound音频服务—b

    对于简单的.无混音音频,AVAudio ToolBox框架提供了一个简单的C语言风格的音频服务.你可以使用AudioservicesPlaySystemSound函数来播放简单的声音.要遵守以下几个规 ...

  7. MCS-51单片机存储器结构

    MCS-51的存储器可分为四类:  程序存储器 一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之.那么设 ...

  8. 一本QT书,连接MySQL图文并茂

    http://qtdebug.com/index.html http://qtdebug.com/DB-AccessMySQL.html

  9. SignalR 的跨域支持

    How to establish a cross-domain connection Typically if the browser loads a page from http://contoso ...

  10. 在QTreeWidget中删除QTreeWidgetItem

    我就想删除topLevelItem  stackoverflow上是这样说的: http://stackoverflow.com/questions/9392051/how-do-i-delete-a ...