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();
            }

  

时间: 2024-12-14 18:09:53

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

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

数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: 更新客户所购商品的库存信息 保存客户付款信息--可能包括与银行系统的交互 生成订单并且保存到数据库中 · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新.

sql数据库还原,出现媒体簇的结构不对,SQL Server无法处理此媒体簇的解决方式之中的一个。

问题: sql数据库还原.出现媒体簇的结构不对,SQL Server无法处理此媒体簇. 异常例如以下图. 造成问题的解决办法: 我的电脑上安装了sql2005和sql2008,问题就在于我用sql2008的SQL Server Management Studio工具打开的是sql2005的实例.用SELECT @@VERSION语句就可以查看当前的实例版本号. 例如以下图. 所以终于的解决方式就是,仅仅要保证连接实例所在的版本大于等于要还原的数据库的版本.就可以还原成功.

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

一.   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程功能. 存储过程相对于其他的数据库访问方法有以下的优点: (1)重复使用.存储过程可以重复使用,从而可以减少数据库开发人员的工作量. (2)提高性能.存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译.一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率. (3)减少网络

SQL Server 2014存储过程的备份和还原

Sql Server 2014存储过程备份和恢复... 1 1.      备份存储过程:... 1 2.      还原... 8 Sql Server 2014存储过程备份和恢复 1. 备份存储过程: 在数据库管理软件中先备份好存储过程 操作步骤:数据库->可编程性->存储过程 看到有几个存储过程,然后 选择生产脚本 选择下一步 还可以展开选择要备份的存储过程: 选择下一步,设置脚本编写选项:确定就好: 选择确定之后选择下一步 就开始备份存储过程了: 备份完成: 在磁盘上找到该存储过程的备

SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作

原文:SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作 在开发或者测试环境的数据库中,经常会发现有开发或者测试人员误删除表或者数据的情况,对于开发或者测试库,一般都没有安排定时的备份任务去备份数据库,一方面是由于存储资源有限,不太可能给开发或者测试环境准备大量的存储空间,二是必要性不是很强,开发或者测试库的数据库对象变化太多,通过还原备份的方式又有可能冲掉其最近新建的数据库对象.但是不得不面对的问题就是个别人在执行update或者delete操作的时候“忘了加

sql数据库发布、订阅同步方式操作

Sql数据库发布订阅分为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅. 一.发布. 发布需要用实际的服务器名称,不能使用服务器的IP地址.能发布的信息包括表,视图,用户定义函数,存储过程. 1.1.配置别名 分发服务器: 启动SQL Server配置管理器 SQL Server网络配置“TCP/IP”启用 Sql Native Client 10.0配置(32位)“别名”新建别名 如下图: 说明: 别名指发布/订阅服

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

//连接方式访问数据库的主要步骤 1.创建连接对象(l链接字符串) 2.创建命令对象(设置Command对象的几个属性值) 3.打开连接 4.发送命令 5.处理数据 6.关闭连接 //非链接方式访问数据库 1/创建连接对象 2.创建数据适配器对象 3.打开连接 4.发送命令 5.关闭连接

SQL数据库&mdash;&mdash;存储过程

SQL数据库--存储过程 语法格式: use 数据库名 在存储过程第一行就要首先声明所在数据库 go create(alter) proc 存储过程名 形参(@-), - as begin 执行体 (return) end go 注意:建立一个存储过程后,修改的话应该把create 改为alter. 执行体内的语法: 1.定义变量:declare 变量名(@-) 数据类型 2.赋值语法:set/select 变量名=表达式 3.if语句格式: if- begin - end else begin

JDBC-ODBC桥连接方式操纵SQL数据库

/**  * 功能:演示使用JDBC-ODBC桥连接方式操纵SQL数据库  * 作者:徐守威  * 操作步骤:  * 1.配置数据源  * 2.在程序中连接数据源  * 3.操作数据  */ package com.jasxu; //引入sql包 import java.sql.*; public class T1 { /**   * @param args   */  public static void main(String[] args) {   // TODO Auto-generat