首页 > 解决方案 > 如何断开与 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 托管实例中实现这一点?

标签: c#sql-serverdatabaserestoreazure-sql-managed-instance

解决方案


在 RESTORE FROM URL in Managed Instance 中,您甚至无法替换现有数据库。

所以要么在 RESTORE 之前删除或重命名数据库。两者都DROP DATABASE MyDbALTER DATABASE MyDb MODIFY NAME = MyDb_old终止与数据库的现有连接。

或者,您可以使用托管时间点还原将现有数据库还原到以前的时间点。


推荐阅读