在复制Azure SQL数据库时,我遇到了一个问题。我们正在复制的数据库有一个在线副本,作为Geo复制的一部分,可以通过Azure Portal进行配置。
我们使用Azure复制按钮将主数据复制到另一个服务器上,但是我们的数据库副本仍然认为它是复制集的一部分。
例如,我运行以下SQL:
ALTER DATABASE <DatabaseName> SET SINGLE_USER WITH ROLLBACK IMMEDIATE
我得到的回应是:
该操作不能在数据库"“上执行,因为它涉及数据库镜像会话或可用性组。在参与数据库镜像会话或可用性组的数据库上,不允许进行某些操作。Msg 5069,级别16,状态1,第1行ALTER语句失败。
我试着跑:
ALTER DATABASE <DatabaseName> SET PARTNER OFF; 这在azure-sql中不受支持,因此我得到以下方面的响应:
此版本的Server不支持关键字或语句选项“PARTNER”。
数据库副本的Azure门户声明“Geo-复制未配置”。
有人能告诉我如何告诉数据库复制,它不再是任何复制的一部分吗?
发布于 2018-12-07 15:59:55
添加到Conor应答时,还可以尝试将数据库导出为bacpac,然后将其作为新数据库导入。这里您将发现如何将数据库导出到Azure存储帐户。
发布于 2018-12-07 17:07:40
这
alter database current set single_user with rollback immediate在Azure SQL数据库中总是失败,因为:
Msg 1468、级别16、状态1、第3行无法对数据库"xxxx“执行操作,因为它涉及数据库镜像会话或可用性组。
您将看到,single_user不在Azure的ALTER数据库所支持的语法中。相反,您可以设置RESTRICTED_USER:
<db_update_option> ::=
{ READ_ONLY | READ_WRITE }
<db_user_access_option> ::=
{ RESTRICTED_USER | MULTI_USER } RESTRICTED_USER RESTRICTED_USER只允许db_owner固定数据库角色的成员以及dbcreator和sysadmin固定服务器角色的成员连接到数据库,但不限制它们的数量。到数据库的所有连接在ALTER语句的终止子句指定的时间框架内断开。数据库转换到RESTRICTED_USER状态后,不合格用户的连接尝试将被拒绝。RESTRICTED_USER不能使用进行修改。
如果无法连接到主数据库,查看并可能杀死连接到用户数据库的会话,则将数据库设置为SINGLE_USER可能会很糟糕。
发布于 2018-12-07 13:59:51
我去问问工程队。可能是在复制期间,它在概念上是副本集的一部分,直到副本完成。
您的替代方案应该在没有任何问题的情况下工作,比如您所看到的解除阻塞的方法,就是从“现在”恢复一个备份,它将从最近的备份中为您创建一个数据库的新副本(它会执行差异备份,以便在指定的时间点之前得到所有的更改)。试试看这是否能满足你的需要。
https://stackoverflow.com/questions/53668806
复制相似问题