SQLSERVER SQL备份还原代码C#
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#的更多相关文章
- SQL备份数据库代码
SQL备份数据库代码 #region 服务每天备份一次数据库 /// <summary> /// 服务每天备份一次数据库 /// </summary> public void ...
- sqlserver 2005 备份还原失败
1.直接右键还原数据库可能会失败.如果失败 使用下面的sql语句还原 USE MASTER RESTORE DATABASE bingo FROM DISK = 'F:\DevProject\bing ...
- Ext sqlserver C# 数据库备份还原代码,给大家参考下
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %& ...
- SQL备份还原,分离附加
备份.还原.分离.附加 备份:在要备份的数据库上右键点击任务,在选择备份.在打卡的对话框中根据需要选择.注意:备份过期时间不能为0,否则会马上过期.目标可根据需要放在任何位置.最后,点击确定,备份成功 ...
- SQL 备份还原单个表
如果只想备份或恢复单个表而不想备份或恢复整个数据库的话,往往有以下方法: 1.在Sql server2000 中可以使用DTS来将该表的数据导出成另外的文件格式.当需要恢复时,可以将该文件中数据再通过 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- SQL Server差异备份的备份/还原原理
SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异 备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最 ...
- SQL Server 数据库备份还原和数据恢复
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...
- SQLServer批量备份与还原
原文地址:http://www.cnblogs.com/fygh/archive/2011/09/09/2172546.html 备份与还原是数据库避不开的主题,而作为DBA,经常会面临将一台机器上的 ...
随机推荐
- php分享二十六:支付系统设计
一个典型PHP支付系统的设计与实现 参考:blog.sina.com.cn/s/blog_81f6205801017ec8.html 微信支付开发: http://www.cnblogs.com/tx ...
- xcode自动打ipa包脚本 资料
http://webfrogs.me/2012/09/19/buildipa/ http://blog.csdn.net/baxiaxx/article/details/8267295 http:// ...
- jQuery正则的使用
转自:http://www.maiziedu.com/wiki/jquery/regular/ 基础正则 1.正则表达式的创建 a) var checkNum = /^[A-Za-z0-9]+$/; ...
- 安卓数据解析之 fastjson 的解析以及Gson解析
在安卓开发过程中的.我们经常使用的数据传递是以json格式传递.安卓 亲爹提供了我们Gson解析工具.点击下载Gson.jar 阿里巴巴FastJson是一个Json处理工具包,包含"序列化 ...
- (原创)发布一个C++版本的ORM库SmartDB(一)
先简单说说ORM的优点: 提高开发效率,减少重复劳动,只和业务实体打交道,由业务实体自动生成sql语句,不用手写sql语句. 简单易用, 可维护性好. 隔离数据源,使得我们更换数据源时不用修改代码. ...
- (原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers
ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. in ...
- 交叉编译环境以及开发板上-/bin/sh: ./hello: not found 转载自 http://blankboy.72pines.com
交叉编译环境以及开发板上-/bin/sh: ./hello: not found 目标板是S3C2440.至于交叉编译环境的搭建就不多说了,网上很多教程. 搭建好了交叉编译环境后,第一件事就是传说中的 ...
- XCode 7 运行 cocos2dx 2.2.6问题小节
终于磕磕绊绊的在模拟器上,成功运行了已有项目. 公司提供的Mac系统,版本炒鸡低.向同事拷贝了OS,和XCode. 安装完成后,将已有的可以在Windows上成功运行Android版本的项目,拷贝到了 ...
- 【转】cocos2d-x动画加速与减速
移步原帖传送门:cocos2d-x动画加速与减速 动画是游戏的必然要素之一,在整个游戏过程中,又有着加速.减速动画的需求.以塔防为例子,布塔的时候希望能够将游戏减速,布好塔后,则希望能将游戏加速:当某 ...
- Windows下断言的类型及实现
一.内容综述 本文主要介绍Windows下断言assert的实现,并总结断言的不同应用准则.最后给出一个windows自定义断言的方法. 本文行文参考<Debugging Windows Pro ...