c# - 如何断开与 Azure SQL 托管实例的打开连接?
问题描述
我正在研究将数据库还原到我的 Azure SQL 托管实例的过程,该过程涉及删除现有数据库并在其位置恢复备份(因为托管实例不支持 WITH REPLACE)。
但是,我遇到了断开任何打开连接的问题,因此我可以执行此操作。在更新发生之前应警告用户,但我们不能保证没有打开的连接。
通常,我会按照以下方式做一些事情:
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
--RESTORE HERE
ALTER DATABASE AdventureWorks2012 SET MULTI_USER;
但是,当我尝试对托管实例中的数据库运行类似的操作时,出现以下错误:
不支持此 ALTER DATABASE 语句。更正语法并再次执行该语句。ALTER DATABASE 语句失败。
有没有办法在 Azure SQL 托管实例中实现这一点?
解决方案
在 RESTORE FROM URL in Managed Instance 中,您甚至无法替换现有数据库。
所以要么在 RESTORE 之前删除或重命名数据库。两者都DROP DATABASE MyDb
将ALTER DATABASE MyDb MODIFY NAME = MyDb_old
终止与数据库的现有连接。
或者,您可以使用托管时间点还原将现有数据库还原到以前的时间点。
推荐阅读
- html - 在 div 中添加部分背景
- php - 仅当从我的推荐网站加载网站时如何执行脚本?
- c - CS50 - 拼写器 - 所有单词拼写错误 - 调试显示光标为 NULL,为什么?
- azure - 如何在 ARM 模板的参数中引用参数?
- javascript - 复选框未返回正确值
- reactjs - 如何改变父母的状态取决于孩子的状态
- c++ - 当调用刚体树中的函数(如 doKinematics、CreateKinematicCache)时,如何修复 cpp 中的“未定义引用”错误
- html - 如何在 golang 中使用 html
- android - 运行应用程序时启用 proguard 崩溃(未找到类“androidx.core.app.CoreComponentFactory”)
- php - array_merge VS 直接数组注入性能