首页 > 数据库 >c#程序备份数据库的方法

c#程序备份数据库的方法

时间:2023-08-01 17:00:27浏览次数:28  
标签:string c# 备份 rstDatabase connection new csb 数据库


using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;


public void BackupDatabase(SqlConnectionStringBuilder csb, string backupPath) { // 创建服务器连接对象 ServerConnection connection = new ServerConnection(csb.DataSource, csb.UserID, csb.Password); try { // 连接到服务器 Server server = new Server(connection); // 创建备份对象 Backup backup = new Backup(); backup.Action = BackupActionType.Database; backup.Database = csb.InitialCatalog; // 设置备份路径 BackupDeviceItem backupDevice = new BackupDeviceItem(backupPath, DeviceType.File); backup.Devices.Add(backupDevice); // 执行备份操作 backup.SqlBackup(server); } catch (Exception ex) { // 处理异常 Console.WriteLine("备份数据库出错:" + ex.Message); } finally { // 关闭连接 connection.Disconnect(); } } public void RestoreDatabase(SqlConnectionStringBuilder csb, String backUpFile) { ServerConnection connection = new ServerConnection(csb.DataSource, csb.UserID, csb.Password); Server sqlServer = new Server(connection); Restore rstDatabase = new Restore(); rstDatabase.Action = RestoreActionType.Database; rstDatabase.Database = csb.InitialCatalog; BackupDeviceItem bkpDevice = new BackupDeviceItem(backUpFile, DeviceType.File); rstDatabase.Devices.Add(bkpDevice); rstDatabase.ReplaceDatabase = true; rstDatabase.SqlRestore(sqlServer); }
   string saveAway = uiTBBackupDirectory.Text.Trim()+ "\\xxxx.bak";
                      string ConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionStr"].ToString();
                      string[] cons = ConnectionString.Split(';');
                      string[] databases = cons[3].Split('=');
把上边的字符串划分字段改改整到下边的配置内,下边为测试数据
  SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
                    csb.ConnectionString = ConnectionString;
                    csb.DataSource = ".,1933";
                    csb.InitialCatalog = "xxxx";
                    csb.UserID = "sa";
                    csb.Password = "125612";
                    bakHelper.BackupDatabase(csb,  saveAway);     

备份的路径必须写全了,连文件名也写进去,要不就会出现权限问题了.

标签:string,c#,备份,rstDatabase,connection,new,csb,数据库
From: https://www.cnblogs.com/zuochanzi/p/17597433.html

相关文章

  • Eclipse和idea对比
    1、idea的日志打印很好用,自己鼠标向上滑动之后,就不会滚屏了,知道我们是在看日志了。而且日志打很多也不会被覆盖。Eclips就不太方便,Eclips在不断打日志时,控制台会滚动起来不方便看日志,而且Eclipse日志多了,会覆盖以前的旧日志。缓存太小了。 ......
  • mvc的return view复选框反填
    首先我后台返回的是选中的复选框id字符串,把这个字符串绑定到一个控件上             在文档就绪函数获取要反填的id字符串和复选框元素,遍历多选框元素并设置选中状态,最后刷新表单。  ......
  • CodeGeeX2 模型全新上线,编程助手能力全面升级!
    第二代CodeGeeX代码生成模型CodeGeeX2-6B已于近日发布,并在CodeGeeX编程助手插件上全面上线。新模型基于ChatGLM2-6B架构加入代码预训练实现,精度更高、速度更快、能力更强。下面我们一起来看一下新版模型给CodeGeeX编程助手带来的变化吧:一、代码生成更快更精准,问答更智能相比......
  • A Novel Noise Injection-based Training Scheme for Better Model Robustness
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!https://arxiv.org/abs/2302.10802......
  • easyExcel设置自动换行
    1//内容样式策略2WriteCellStylecontentWriteCellStyle=newWriteCellStyle();3//垂直居中,水平居中4contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);5contentWriteCellStyle.setHorizontalAlignment(......
  • Educational Codeforces Round 152 (Rated for Div. 2) C. Binary String Copying
    题目大意为给定一个01字符串,给定m个区间,对于每个区间进行一次局部排序,求能得到的字符串种类数解法:因为字符串只包含0,1两个字符,我们观察可以得到,对于不同的区间来说如果排序后一样则说明肯定是某些位置在排序过程中无贡献,因此我们只需找出有贡献的位置即可对于一个区间[l,r],来说......
  • JavaScript基础02
    隐式类型转换加法运算中,如果参与运算的有一个值不是数字,另外一个值是数字,会将数字隐式转换成字符串再与数字进行拼接减乘除取余运算中,如果有非数字,会将它隐式转成数值,然后参与运算;如果参与运算存在NaN,那么得到的是NaN运算符算术运算符+-*/%一元运算符++自增--自......
  • 无法访问org.springframework.context.annotation.Bean 错误的类文件:类文件具有错误
    Spring6和SpringBoot3不再支持Java8,最低版本为JDK17,请升级JDK>=17,同时IDEA>=2021.2长期使用的Java8,这次报错一直切换Spring依赖版本,没想到是Java太旧了,而且IDEA小于2021.2版本也不支持Java17来源SpringSecurity教程的源码,本地打开,各种依赖报错Error:(6,46)java......
  • CF Round #889 订正
    C.Dual\(\bf\sfez\ver.\)比较简单,首先不递减数组的差分数组必定是非负自然数构成的,所以我们只要全部变成正或负的,前后做一次前缀和即可。全变成正或负,找到最大绝对值的数,对所有异号元素进行操作,理论最多次数为\(2(n-1)=38\)次。\(^*\bf\sfhd\ver.\)我们发现异号元素......
  • C预处理器
    预处理器预处理器基本介绍C语言编译器在编译程序之前,会先使用预处理器(preprocessor)处理代码。预处理器首先会清理代码,进行删除注释、多行语句合成一个逻辑行等工作。然后,执行#开头的预处理指令。本章介绍C语言的预处理指令。预处理指令可以出现在程序的任何地方,但是习惯上,......