public class BakDBHelper
{ /// <summary>
/// 创建数据库备份
/// </summary>
public string CreateBackup(string dbname, string backname)
{
string res = "";
//要备份的位置
//string dbfullname = GetDbPath() + string.Format("{0}_{1}.bak", dbname, DateTime.Now.ToString("yyyyMMddhhmmss"));
string dbfullname = GetDbPath() + backname;
//判断文件是否存在
if (File.Exists(dbfullname))
{
File.Delete(dbfullname);
//MessageBox.Show(dbfullname + "的备份文件已经存在,请稍后再试");
}
try
{
SqlConnection con = new SqlConnection(GetConn());
SqlCommand cmd = con.CreateCommand();
con.Open();
try
{
cmd.CommandText = "use master";
cmd.ExecuteNonQuery(); //1. 执行备份操作
StringBuilder sql = new StringBuilder();
//sql.Append("exec master.dbo.proc_Backup @dbName,@dbFullName"); sql.Append(@"DECLARE @kid varchar(100)
SET @kid=''
SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses
WHERE dbid=DB_ID(@dbName)
PRINT @kid
EXEC(@kid);
backup database "+ dbname + " to disk=@dbFullName;"); SqlParameter[] parameters = new SqlParameter[]{
new SqlParameter("@dbName",SqlDbType.NVarChar,),
new SqlParameter("@dbFullName",SqlDbType.NVarChar,),
};
parameters[].Value = dbname;
parameters[].Value = dbfullname; cmd.Parameters.Clear();
cmd.Parameters.AddRange(parameters);
cmd.CommandText = sql.ToString();
cmd.ExecuteNonQuery();
res = "备份完成";
}
finally
{
con.Close();
}
}
catch (Exception ex)
{
res = "创建数据库备份出错:" + ex;
}
return res;
} /// <summary>
/// 还原数据库
/// </summary>
public string Restore(string dbname, string backname)
{
string res = "";
//1.获取还原数据库和文件
string dbFullName = GetDbPath() + backname;
try
{
//2.执行还原操作
SqlConnection con = new SqlConnection(GetConn());
SqlCommand cmd = con.CreateCommand();
con.Open();
try
{
cmd.CommandText = "use master";
cmd.ExecuteNonQuery(); StringBuilder sql = new StringBuilder();
//sql.Append("exec proc_Restore @dbFullName,@dbName"); sql.Append(@"--1.1修改为单用模式
exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
--1.2结束链接进程
DECLARE @kid varchar(max)
SET @kid=''
SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10)) FROM master..sysprocesses
WHERE dbid=DB_ID(@dbName) ;
EXEC(@kid) ;
--2.执行还原语句
restore database @dbName from disk=@dbFullName
with replace --覆盖现有的数据库
--3.重置数据库为多用户模式
exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');");
SqlParameter[] parameters = new SqlParameter[]{
new SqlParameter("@dbName",SqlDbType.NVarChar,),
new SqlParameter("@dbFullName",SqlDbType.NVarChar,),
};
parameters[].Value = dbname;
parameters[].Value = dbFullName; cmd.CommandText = sql.ToString();
cmd.Parameters.AddRange(parameters);
cmd.ExecuteNonQuery();
res = "还原数据库完成";
}
finally
{
con.Close();
} }
catch (Exception ex)
{
res = "还原数据库出错" + ex;
}
return res;
} private static string GetDbPath()
{
return ConfigurationManager.AppSettings["bak_url"].ToString();
} private static string GetConn()
{
return ConfigurationManager.AppSettings["bak_con"].ToString();
} public int execSQLCommand(string sql)
{
int res;
try
{
//2.执行还原操作
SqlConnection con = new SqlConnection(GetConn());
SqlCommand cmd = con.CreateCommand();
con.Open();
try
{
cmd.CommandText = sql;
res = cmd.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
catch (Exception)
{
return -;
}
return res;
}
}

SQLSERVER SQL备份还原代码C#的更多相关文章

  1. SQL备份数据库代码

    SQL备份数据库代码 #region 服务每天备份一次数据库 /// <summary> /// 服务每天备份一次数据库 /// </summary> public void ...

  2. sqlserver 2005 备份还原失败

    1.直接右键还原数据库可能会失败.如果失败 使用下面的sql语句还原 USE MASTER RESTORE DATABASE bingo FROM DISK = 'F:\DevProject\bing ...

  3. Ext sqlserver C# 数据库备份还原代码,给大家参考下

      <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %& ...

  4. SQL备份还原,分离附加

    备份.还原.分离.附加 备份:在要备份的数据库上右键点击任务,在选择备份.在打卡的对话框中根据需要选择.注意:备份过期时间不能为0,否则会马上过期.目标可根据需要放在任何位置.最后,点击确定,备份成功 ...

  5. SQL 备份还原单个表

    如果只想备份或恢复单个表而不想备份或恢复整个数据库的话,往往有以下方法: 1.在Sql server2000 中可以使用DTS来将该表的数据导出成另外的文件格式.当需要恢复时,可以将该文件中数据再通过 ...

  6. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  7. SQL Server差异备份的备份/还原原理

    SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异   备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最 ...

  8. SQL Server 数据库备份还原和数据恢复

      认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...

  9. SQLServer批量备份与还原

    原文地址:http://www.cnblogs.com/fygh/archive/2011/09/09/2172546.html 备份与还原是数据库避不开的主题,而作为DBA,经常会面临将一台机器上的 ...

随机推荐

  1. python标准库介绍——29 zlib 模块详解

    ==zlib 模块== (可选) ``zlib`` 模块为 "zlib" 压缩提供支持. (这种压缩方法是 "deflate".) [Example 2-43 ...

  2. Kinect v2 记录

    最多可同时识别跟踪 6 人,每人可识别到 25 个关节数据.可以根据上身 10 个关节数据来判断坐姿状态. 物理极限识别范围:0.5m – 4.5m,最佳识别范围:0.8m – 3.5m. 深度数据可 ...

  3. 菜鸟学数据库(五)——MySQL必备命令

    今天跟大家分享一下MySQL从连接到具体操作的一系列常用命令.可能有的人觉得现在有很多可视化的工具,没必要再学习那些具体的命令了,但是我不这么认为,不可否认那些工具的确让我们的工作更加方便快捷,但是如 ...

  4. 将redis作为windows服务安装

    1,下载redis并解压到一个目录下,然后切换到该目录下,也就是redis-server.exe文件所在的目录 2,在cmd下执行 redis-server --service-install red ...

  5. LoadingController

    --local MainSceneConfig = require "res.scripts.configs.MainSceneConfig" -- 暂时添加一个临时配置文件 -- ...

  6. Asp.Net文件夹没有读写权限的特殊问题

    如果asp.net网站权限都配置正确,但是仍然出现某一个文件或者文件夹没有读写权限时 原来只用在Web.config里面的  <system.web>节点下增加<identity i ...

  7. audio音乐播放

    1.audio标签 <audio @play="ready" @error="error" ref="audio" :src=&quo ...

  8. Spark提交任务提示 com.mysql.jdbc.Driver Class not found

    com.mysql.jdbc.Driver Not Found 提示很奇怪,在sbt文件中已经引用了,编译也没有问题: "mysql" % "mysql-connecto ...

  9. hive查询遇到java.io.EOFException: Unexpected end of input stream错误

    hive查询遇到java.io.EOFException: Unexpected end of input stream错误 原因基本上有两个: 空文件 不完整的文件 解决办法: 删除对应文件- 参考 ...

  10. 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)

    原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节. 比如说,有一个Person类,有firstN ...