使用 smo 以编程方式备份​​和还原 Azure 数据库

2023-12-24

我们有一个正在运行的网络应用程序。一切都托管在 azure 上。 我们有一台sql server和两个数据库:生产和测试。 客户请求备份生产数据库并将其恢复以代替测试数据库的功能。我正在使用以下代码:

    public static void BackupDatabase(string databaseName, string userName, string password, string serverName, string destinationPath)
    {
        try
        {
            Backup sqlBackup = new Backup();

            sqlBackup.Action = BackupActionType.Database;
            sqlBackup.BackupSetDescription = "ArchiveDataBase:" + DateTime.Now.ToShortDateString();
            sqlBackup.BackupSetName = "Archive";

            sqlBackup.Database = databaseName;

            BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
            ServerConnection connection = new ServerConnection(serverName, userName, password);
            Server sqlServer = new Server(connection);

            Database db = sqlServer.Databases[databaseName];

            sqlBackup.Initialize = true;
            sqlBackup.Checksum = true;
            sqlBackup.ContinueAfterError = true;

            sqlBackup.Devices.Add(deviceItem);
            sqlBackup.Incremental = false;

            sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
            sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

            sqlBackup.FormatMedia = false;

            sqlBackup.SqlBackup(sqlServer);
        }
        catch (FailedOperationException ex)
        {
            throw;
        }
        catch(ConnectionFailureException ex)
        {
            throw;
        }
        catch (Exception ex)
        {
            throw;
        }
    }

    public static void RestoreDatabase(string databaseName, string filePath, string serverName, string userName, string password, string dataFilePath, string logFilePath)
    {
        try
        {
            Restore sqlRestore = new Restore();

            BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
            sqlRestore.Devices.Add(deviceItem);
            sqlRestore.Database = databaseName;

            ServerConnection connection = new ServerConnection(serverName, userName, password);
            Server sqlServer = new Server(connection);

            Database db = sqlServer.Databases[databaseName];

            db.Drop();

            sqlRestore.Action = RestoreActionType.Database;
            string dataFileLocation = dataFilePath + databaseName + ".mdf";
            string logFileLocation = logFilePath + databaseName + "_Log.ldf";
            db = sqlServer.Databases[databaseName];
            RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);

            System.Data.DataTable logicalRestoreFiles = sqlRestore.ReadFileList(sqlServer);
            sqlRestore.RelocateFiles.Add(new RelocateFile(logicalRestoreFiles.Rows[0][0].ToString(), dataFileLocation));
            sqlRestore.RelocateFiles.Add(new RelocateFile(logicalRestoreFiles.Rows[1][0].ToString(), logFileLocation));

            sqlRestore.SqlRestore(sqlServer);
            db = sqlServer.Databases[databaseName];
            db.SetOnline();
            sqlServer.Refresh();
        }
        catch(ExecutionFailureException ex)
        {
            throw;
        }
    }

一切都在本地和所有虚拟机上运行。但现在我们在 Azure 上拥有了所有内容,我不知道应该设置什么备份目录。它必须是 sqlclient(可能是 azure sql 客户端)可以访问的服务器上的目录。在将数据库恢复到测试数据库期间提供位置时,情况也是如此。

如何访问可以存储备份以及可以保存 mdf 和日志文件的目录?

亲切的问候


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 smo 以编程方式备份​​和还原 Azure 数据库 的相关文章

  • 带有子菜单项的 asp.net 菜单,通过后面的代码重定向

    我有一个带有 2 级菜单项的菜单控件 我想通过 OnMenuItemClick 事件后面的代码进行导航 因为当我使用导航 Url 属性时 我的 ajax UpdateProgress 将不会启动 问题是 无论我单击什么子菜单项 当事件引发时
  • 如何以编程方式删除受信任的根证书颁发机构中的证书?

    我需要能够从组织中的每台电脑中删除特定的证书 是的 我可以逐个座位 但我要到周四才能完成 而且我没有人力逐个座位 是否有使用 C 的编程方式来执行此操作 我认为你不需要编写任何 C 看看certmgr exe del http msdn m
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • 为什么这个位图图像在加载后会改变大小?

    快速提问 我有这个1000 1000位图图像 我使用这个例程来加载它 private BitmapSource initialBitmap new BitmapImage new Uri C Users Desktop Original b
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • Swift DidSelectRowAt 未触发

    我有一个项目 有几个不同的 VC 其中两个有 TableViews 第一个工作得很好 我在那里有一个自定义视图等 第二个也是自定义的 它填充了很好的信息 但与第一个不同 我无法点击它来继续下一个 VC 我已正确设置委托和数据源 我的项目中有
  • 在 ASP.NET 开发服务器下运行时,WebForms 中的 ASP.NET 路由不处理非 ASP 扩展

    我在 Visual Studio 2010 下创建了一个默认网站 在 Global asax 中添加了一个简单的路由 routes MapPageRoute AboutRoute about About aspx 当我启动时显示404ASP
  • glGenerateMipmap - 非 2 的幂

    环境 Ubuntu 17 04 Chrome 60 在本地运行此示例 不会出现警告 错误 https github com mdn webgl examples tree gh pages tutorial sample6 https gi
  • 如何使用 Google Cast SDK 3 添加自定义 SessionProvider

    我们最近将 Google Cast SDK 更新至版本 3 使用此 SDK 应该可以通过在期权提供者 https developers google com android reference com google android gms
  • 批量插入到特定列?

    我想将 csv 文件的列批量插入到目标表的特定列 描述 目标表的列数比我的 csv 文件多 因此 我希望使用 BULK INSERT 将 csv 文件列转到正确的目标列 这可能吗 如果是 那么我该怎么做 我在 上看到了教程和代码http b
  • 在 Unix 中如何找到当前日期减去 7 天?

    我正在尝试查找今天 7 天前的日期 CURRENT DT date F T diff CURRENT DT 7 echo diff 我正在尝试类似上述的方法来查找距离当前日期还少的 7 天 有人可以帮我吗 GNU date将为您计算数学 d
  • 如何使 UIView 动画过渡反向卷曲?

    我正在开发允许在某些情况下翻转界面的应用程序 应支持两种横向方向 横向左和右 设备翻转和方向更改工作正常 但是 在横向模式下 应用程序允许使用 UIViewAnimationTransitionCurlUp 效果转到另一个屏幕 然后使用 U
  • Python Tornado Websocket 连接关闭后仍然打开

    我有一个 Tornado Websocket 服务器 我想在 30 分钟不活动后超时 我用self close 30 分钟不活动后关闭连接 但似乎有些连接即使在关闭后仍保持打开状态 这是代码的基本部分 从这里获得帮助后实现 如何在 Torn
  • 作品中是否有 api order_by/sort 参数?

    如果可以在 api 查询字符串中传递 order by 和 sort 参数 那将非常有帮助 order by 应接受以下选项 距离 签到 姓名 sort 应接受以下选项 asc 描述 在将结果集缩小到返回的最大 50 个结果之前 匹配的结果
  • Spring Jndi 配置,Server.xml

    我在使用 Spring 设置 JNDI 配置时遇到问题 我检查了其他帖子 但无法解决我的问题 我使用 Tomcat 6 作为容器 根据我的理解 我需要在服务器上设置资源 所以在我的server xml文件我有这个
  • 在 R 中格式化 html 表

    我想改善外观html我使用包在 R 中生成的表xtable library xtable html table xtable
  • 日期与 ActiveSupport::TimeWithZone 的比较失败

    我有一个age方法在我的Waiver模型看起来像 def age date nil if date nil date Date today end age 0 unless date of birth nil age date year d
  • Android格式日历输出时间

    我正在使用下面的代码来设置闹钟 我想输出此时的时间 我不知道我是否以错误的方式处理这件事 如果我输出变量 cal 它会包含一长串信息 如何仅提取小时和分钟 Calendar cal Calendar getInstance add 5 mi
  • 如何在 iOS 上获取当地时间 [重复]

    这个问题在这里已经有答案了 我刚刚注意到NSDate nowDate NSDate date 给我 GMT 0 时间而不是当地时间 所以基本上在我的 iPad 上是 13 00 这段代码的输出是 12 00 如何正确获取当地时间 试一试 N
  • java 中 .length 的时间复杂度或隐藏成本

    我正在查看一个java项目并发现了一个for循环的写法如下 for int i 1 i
  • 所有类文件中的错误:R 无法解析

    示例代码 setContentView R layout main Error R cannot be resolved 所有类文件中都有这个错误 我无法摆脱它 我已经检查了 XML 文件 没有错误 我已经确保我没有意外导入 android
  • 这个 php.ini 文件到底在哪里?

    我在 yahoo 上使用 phpMyAdmin 运行 php 与 4 1 14 它说该文件位于 usr lib php php4 ini 但我在任何地方都找不到它 它在 phpMyAdmin 文件夹中吗 我真的需要尽快找到这个并关闭 mag
  • 在 Codeigniter 中添加语言的 URI 段

    我有一个网站 我需要开发支持多种语言 例如 en tr ar sp 等 但问题是 使用 Codeigniter 实现这一点的最佳方法是什么 我有一个控制器 SITE 我有很多功能 例如 酒店 城市 页面 博客 我想在此方法之前添加一个段 语
  • 识别 Kibana 和 ElasticSearch 中的时间戳

    我是 ElasticSearch 和 Kibana 的新手 无法让 Kibana 识别我的时间戳 我有一个包含大量数据的 JSON 文件 我希望使用 Curl 将其插入到 Elasticsearch 中 以下是其中一个 JSON 条目的示例
  • 使用 smo 以编程方式备份​​和还原 Azure 数据库

    我们有一个正在运行的网络应用程序 一切都托管在 azure 上 我们有一台sql server和两个数据库 生产和测试 客户请求备份生产数据库并将其恢复以代替测试数据库的功能 我正在使用以下代码 public static void Bac