C# 还原SQL数据库(非存储过程方式)
Winform的代码,最好是在数据所在电脑上运行代码,不然会因为权限问题导致失败。
数据库备份:
- SqlConnection con = new SqlConnection("Data Source=.;;Initial Catalog=DB_Test;User ID=sa;Password=sa");
- string sql = "backup database DB_Test to disk= 'c:\\aVb.bak'";
- con.Open();
- if (!File.Exists("c:\\aa.bak"))
- {
- SqlCommand com = new SqlCommand(sql, con);
- com.ExecuteNonQuery(); //执行sql语句
- lblmessage.Text = "系统信息:备份成功!";
- }
- else
- {
- lblmessage.Text = "系统信息:文件已存在!";
- }
数据库还原:
- //引用SQLDMO.dll,SQLDMO由Microsoft SQL Server自带的SQLDMO.dll提供,SQLDMO.dll是一个COM对象
- SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
- try
- {
- svr.Connect("192.168.89.20", "sa", "Aa123456");
- //取得所有的进程列表
- SQLDMO.QueryResults qr = svr.EnumProcesses(-1);
- int iColPIDNum = -1;
- int iColDbName = -1;
- //找到和要恢复数据库相关的进程
- for (int i = 1; i <= qr.Columns; i++)
- {
- string strName = qr.get_ColumnName(i);
- if (strName.ToUpper().Trim() == "SPID")
- {
- iColPIDNum = i;
- }
- else if (strName.ToUpper().Trim() == "DBNAME")
- {
- iColDbName = i;
- }
- if (iColPIDNum != -1 && iColDbName != -1)
- break;
- }
- //将相关进程杀死
- for (int i = 1; i <= qr.Rows; i++)
- {
- int lPID = qr.GetColumnLong(i, iColPIDNum);
- string strDBName = qr.GetColumnString(i, iColDbName);
- if (strDBName.ToUpper() == strDbName.ToUpper())
- svr.KillProcess(lPID);
- }
- SQLDMO.Restore res = new SQLDMO.RestoreClass();
- res.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
- res.Files = strFileName;
- res.Database = strDbName;
- res.FileNumber = 1;
- res.ReplaceDatabase = true;
- res.SQLRestore(svr);
- return true;
- }
- catch (Exception err)
- {
- //throw (new Exception("" + err.Message));
- MessageBox.Show("恢复数据库失败,请关闭所有和该数据库连接的程序!" + err.Message);
- return false;
- }
- finally
- {
- svr.DisConnect();
- }
C# 还原SQL数据库(非存储过程方式)的更多相关文章
- sql数据库的链接方式
今天看见了一个数据库的链接方法,给转载了,记得我刚刚学DAO的时候老是要记载这些东西,所以就上博客园上面看了看,就转过来了... MySQL: String Driver="com.mysq ...
- SQL数据库—<6>存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- SQL 数据库事务 存储过程练习
数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. ...
- SQL数据库增量备份还原方式
SQLSERVER2008的备份还原最基本的方式自然是完整备份,然后完整还原即可. 但是如果遇到数据库文件很大,数据量很大,备份和还原需要花费不少时间的时候, 数据库的差异备份自然就成为考虑的备份方案 ...
- C#.NET SQL数据库备份与还原解决方案
C#.NET SQL数据库备份与还原解决方案http://www.csframework.com/archive/1/arc-1-20110924-1841.htm 开发框架V2.2(快速开发版)系统 ...
- 存储过程学习笔记(SQL数据库
一. 存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程 ...
- SQL数据库问题 解释一下下面的代码 sql 存储过程学习
SQL数据库问题 解释一下下面的代码 2008-08-13 11:30wssqyl2000 | 分类:数据库DB | 浏览1154次 use mastergocreate proc killspid( ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- ADO.NET 连接方式和非链接方式访问数据库
一.//连接方式访问数据库的主要步骤(利用DataReader对象实现数据库连接模式) 1.创建连接对象(连接字符串) SqlConnection con = new SqlConnection(Co ...
随机推荐
- 【转载】Java StringBuffer与StringBuider
本文转载微学苑java基础教程,原文地址链接:http://www.weixueyuan.net/view/6318.html String 的值是不可变的,每次对String的操作都会生成新的Str ...
- GitHub——如何更新已经fork的代码
github上有个很方便的功能叫fork,将别人的工程一键复制到自己账号下.这个功能很方便,但有点不足的是,当源项目更新后,你fork的分支并不会一起更新,需要自己手动去更新.下面记录下网上找到的更新 ...
- 【基础教程】推荐10+必备的 WordPress 常用插件
1.Akismet Akismet 是 WordPress 官方推荐的一款 WordPress 防垃圾评论插件,也是默认已安装的插件. 2.WP-Postviews 最好的最流行的WordPress浏 ...
- django初探
如果是自己建站耍的话,还是用Php方便,毕竟Php服务器便宜又到处都是. 但是python毕竟是一个新鲜的东西,特别是django,以前一直东python的语法,而且是我最早学习的语言之一,但是一直停 ...
- Andriod手势密码破解
★ 引子 之前在Freebuf上看到一片文章讲Andriod的手势密码加密原理,觉得比较有意思,所以就写了一个小程序试试. ★ 原理 Android的手势密码加密原理很简单: 先 ...
- AudioServicesPlaySystemSound音频服务—b
对于简单的.无混音音频,AVAudio ToolBox框架提供了一个简单的C语言风格的音频服务.你可以使用AudioservicesPlaySystemSound函数来播放简单的声音.要遵守以下几个规 ...
- MCS-51单片机存储器结构
MCS-51的存储器可分为四类: 程序存储器 一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之.那么设 ...
- 一本QT书,连接MySQL图文并茂
http://qtdebug.com/index.html http://qtdebug.com/DB-AccessMySQL.html
- SignalR 的跨域支持
How to establish a cross-domain connection Typically if the browser loads a page from http://contoso ...
- 在QTreeWidget中删除QTreeWidgetItem
我就想删除topLevelItem stackoverflow上是这样说的: http://stackoverflow.com/questions/9392051/how-do-i-delete-a ...