如何通过 C# 动态备份 Sql 数据库?

咨询区

  • kaiz.net

我想写段代码来备份我的 Sql Server 2008 数据库,请问大家有什么好的方法吗?

回答区

  • Stacked

你可以用代码去执行  BACKUP DATABASE ... TO DISK 命令,比如下面这样,先配置下config。

<?xml version="1.0" encoding="utf-8"?>
<configuration><connectionStrings><add name="MyConnString" connectionString="Data Source=(local);Initial Catalog=MyDB; Integrated Security=SSPI;" Timeout=30" /></connectionStrings><appSettings><add key="BackupFolder" value="C:/temp/"/></appSettings>
</configuration>

然后就可以编码了。

// read connectionstring from config file
var connectionString = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString; // read backup folder from config file ("C:/temp/")
var backupFolder = ConfigurationManager.AppSettings["BackupFolder"];var sqlConStrBuilder = new SqlConnectionStringBuilder(connectionString);// set backupfilename (you will get something like: "C:/temp/MyDatabase-2013-12-07.bak")
var backupFileName = String.Format("{0}{1}-{2}.bak", backupFolder, sqlConStrBuilder.InitialCatalog, DateTime.Now.ToString("yyyy-MM-dd"));using (var connection = new SqlConnection(sqlConStrBuilder.ConnectionString))
{var query = String.Format("BACKUP DATABASE {0} TO DISK='{1}'", sqlConStrBuilder.InitialCatalog, backupFileName);using (var command = new SqlCommand(query, connection)){connection.Open();command.ExecuteNonQuery();}
}
  • Prashant Manjule

对于 SqlServer 的备份和恢复,完全可以使用自带的 SqlCmd 命令,接下来就是用 C#SqlCmd 互动就行了。

  1. 备份

SqlCmd -E -S Server_Name –Q “BACKUP DATABASE [Name_of_Database] TO DISK=’X:PathToBackupLocation[Name_of_Database].bak'”
  1. 恢复

SqlCmd -E -S Server_Name –Q “RESTORE DATABASE [Name_of_Database] FROM DISK=’X:PathToBackupFile[File_Name].bak'”

然后我们通过  Process 启动 bat 脚本即可。

FileInfo file = new FileInfo("DB\\batfile.bat");Process process = new Process();process.StartInfo.FileName = file.FullName;process.StartInfo.Arguments = @"-X";process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;process.StartInfo.UseShellExecute = false; //Changed Lineprocess.StartInfo.RedirectStandardOutput = true;  //Changed Lineprocess.Start();string output = process.StandardOutput.ReadToEnd(); //Changed Lineprocess.WaitForExit(); //Moved Line

点评区

如果要备份DB,一般用数据库的计划任务,如果一定要通过代码实现,我觉得用 SqlCmd 工具更适合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学好英语网首页制作_没有美术基础的新手小白,如何学好淘宝美工?

没有美术基础的新手小白&#xff0c;如何学好淘宝美工&#xff1f;俗话说&#xff1a;万事开头难&#xff0c;没有任何基础、没有美术基础学淘宝美工&#xff0c;要怎么学习好呢&#xff1f;显然&#xff0c;作为一名没有美术基础的新手小白&#xff0c;一般开始学习的时候都是…

14岁上中科大,18岁攻读麻省博士,28岁成为哈佛最年轻副教授,“华人女天才”的开挂人生...

全世界只有3.14 % 的人关注了爆炸吧知识哈佛年纪最小的副教授是中国人1997年美国颁发的罗伯特里得奖获得者蔡天西&#xff0c;22岁获国际生物统计学协会颁发的极大成就"半参数随机"奖&#xff0c;28岁成为哈佛最年轻的女性副教授&#xff0c;香港、美国、著名学术刊物…

lnmp_auto:自动化安装lnmp环境脚本

朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了&#xff0c;但是还没有使用过“一键安装”的自动化脚本&#xff0c;去网上有搜索出来&#xff0c;但是运行的时候发现用root运行别人的脚本还是真危险的事情&#xff0c;于是明白这不是个轮子&#xff0c;而是…

汇编语言之寄存器(内存访问)

1、内存中字的存储 2、ds和【address】 CPU要读写一个内存单元的时候&#xff0c;必须先给出这个内存单元的地址&#xff0c;在8086CPU中&#xff0c;内存地址由段地址和偏移地址组成&#xff0c; 其中&#xff0c;段地址存放在段寄存器DS中&#xff0c;DS称作数据段寄存器。…

JS实现图片预加载

网站开发时经常需要在某个页面需要实现对大量图片的浏览&#xff0c;如果考虑流量的话&#xff0c;大可以像pconline一样每个页面只显示一张图片&#xff0c;让用户每看一张图片就需要重新下载一下整个页面。不过&#xff0c;在web2.0时代&#xff0c;更多人愿意用javascript来…

用sort()方法随机打乱数组

2019独角兽企业重金招聘Python工程师标准>>> 我们先看一下随机数组排序的示例&#xff0c;再来研究其中的原理。 随机数组排序示例 var numbers [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; numbers numbers.sort(function(…

Linux下部署Kubernetes+Kubesphere(一)Kubernetes基础

1.服务器规划为配置Kubesphere高可用集群&#xff0c;需要三台或三台以上机器作为Master节点&#xff0c;每台机器既可以作为Master也可以作为Worker节点。其中Master节点数量建议为单数。该示例中采用三台服务器&#xff0c;即作为Master节点也作为Worker节点&#xff0c;配置…

触发器及其应用实验报告总结_调机技巧总结: 先快后慢射胶法及其应用

戳我进入社区&#xff1a;注塑和模具人的网上家园先快后慢&#xff0c;也即先用一级快速射胶&#xff0c;射到某个设定的位置时&#xff0c;再起二级慢速射胶。这个二级起级点一般是设在射胶充型的后期&#xff0c;也即接近充型结束的位置。使用一级快速射胶&#xff0c;可以保…

汇编语言之寻址方式

&#xfeff;&#xfeff;1、内存单元和[bx]的描述 要完整地描述一个内存单元&#xff0c;需要两种信息&#xff1a;1.内存单元的地址&#xff1b;2.内存单元的长度&#xff08;即是字节单元还是字单元&#xff09;。 如&#xff1a;mov ax, [2a78] 表示将一个内存单元中的数…

命名空间的使用

namespace hunan\changsha class Person{ static $namewu_han; } namespace hunan\changsha 声明命名空间&#xff0c;它的作用包括方法&#xff0c;类名&#xff0c;常量&#xff0c;这三者都统称为元素 当在程序里使用元素的时候&#xff0c;默认在当前的命名空间里找该元素…

使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics

使用 dotnet-monitor 在 Kubernetes 中收集 .NET metricsIntrodotnet-monitor 是微软推出的一个帮助我们诊断和监控 .NET 应用程序的工具&#xff0c;在 Kubernetes 中我们可以让 dotnet-monitor 作为 sidecar 运行&#xff0c;无侵入地监控 .NET 应用&#xff0c;今天我们就来…

DOM 事件深入浅出(二)

在DOM事件深入浅出&#xff08;一&#xff09;中&#xff0c;我主要给大家讲解了不同DOM级别下的事件处理程序&#xff0c;同时介绍了事件冒泡和捕获的触发原理和方法。本文将继续介绍DOM事件中的知识点&#xff0c;主要侧重于DOM事件中Event对象的属性和方法。 那么什么是DOM事…

arcgis 分区 属性值_ArcGIS制图之Maplex自动点抽稀

制图工作中&#xff0c;大量密集点显示是最常遇到的问题。其特点是分布可能不均匀、数据点比较密集&#xff0c;容易造成空间上的重叠&#xff0c;影响制图美观。那么&#xff0c;如果美观而详细的显示制图呢&#xff1f;主要原理Maplex中对标注有很好的显示控制&#xff0c;一…

学术造假导致导师自杀,后将这段学术丑闻经历出书贩卖,一年收入上百万......

全世界只有3.14 % 的人关注了爆炸吧知识本文转自募格学术2020年2月11日&#xff0c;小保方晴子又被撤回了一篇研究论文。Tissue Engineering Part A撤稿给出的原因是&#xff1a;通过哈佛医学院正式调查后&#xff0c;无法确实其实验结果的准确性&#xff0c;尽管作者本人坚持已…

汇编语言之数据处理的2个基本问题

&#xfeff;&#xfeff;1、bx、si、di和bp Bx、si和di这3个寄存器我们已经学过了&#xff0c;现在进行一下总结&#xff0c;并学一下bp。 1&#xff1a;在8086CPU中&#xff0c;只有这4个寄存器可以用在[…]中来进行内存单元的寻址。比如&#xff0c;下面的指令都是正确 的…

js(jQuery)获取时间的方法及常用时间类

获取JavaScript 的时间使用内置的Date函数完成 var mydate new Date();mydate.getYear(); //获取当前年份(2位)mydate.getFullYear(); //获取完整的年份(4位,1970-????)mydate.getMonth(); //获取当前月份(0-11,0代表1月)mydate.getDate(); //获取当前日(1-31)mydate.getD…

phalcon: 缓存片段,文件缓存,memcache缓存

几种缓存&#xff0c;需要用到前端配置&#xff0c;加后端实例配合着用 片段缓存&#xff1a; public function indexAction(){//渲染页面$this->view->setTemplateAfter(common);//缓存片段 //前端配置$frontcache new \Phalcon\Cache\Frontend\Output(array(&q…

nvm用标准sata ahci码_能者多劳!让NVMe固态硬盘做系统盘的同时,加速SATA数据盘...

不知不觉当中&#xff0c;固态硬盘已经取代机械硬盘成为主流。越来越多的玩家已经淘汰机械盘&#xff0c;使用NVMeSATA的固态硬盘高低搭配。既然是高低搭配&#xff0c;就一定会有性能差距&#xff0c;是否能从NVMe固态硬盘中划分出一小部分空间来给SATA固态硬盘加速&#xff0…

天了噜!定义static字段还有顺序要求?

前言前段时间&#xff0c;发现一个bug&#xff0c;代码结构类似下面的示例。你能说出这段代码的正确返回结果吗&#xff1f;class Program {private static int a1 a2;private static int a2 Init();private static int Init(){return 123;}static void Main(string[] args){…