我在 sql 2012 中使用 always on 并设置了 AG。我想知道我是否要备份主数据库并在不关闭集群等的情况下恢复它。
其次,如果我有一个正在部署我的数据库的 SSDT 项目并且我事先有一个 AG 设置并且要通过该项目将那个空白数据库部署到主数据库,它会“同步”更改因此删除所有数据(如果有的话)出现在中学?这是一个不太可能的场景,只是想知道会发生什么。
谢谢!
我在 sql 2012 中使用 always on 并设置了 AG。我想知道我是否要备份主数据库并在不关闭集群等的情况下恢复它。
其次,如果我有一个正在部署我的数据库的 SSDT 项目并且我事先有一个 AG 设置并且要通过该项目将那个空白数据库部署到主数据库,它会“同步”更改因此删除所有数据(如果有的话)出现在中学?这是一个不太可能的场景,只是想知道会发生什么。
谢谢!
这实际上是两个不同的问题。
1) 您无法还原属于数据库镜像对或可用性组的数据库。如果您尝试这样做,您将收到如下错误:
消息 3104,级别 16,状态 1,第 2 行 RESTORE 无法对数据库“AdventureWorks2012”进行操作,因为它配置为数据库镜像或已加入可用性组。如果您打算还原数据库,请使用 ALTER DATABASE 删除镜像或从其可用性组中删除数据库。
消息 3013,级别 16,状态 1,第 2 行 RESTORE DATABASE 异常终止。
2) 对可用性组中的主数据库所做的任何更改都将同步到其他副本。这包括 DML 和 DDL 更改。但是,在进行 SSDT 部署时,有一些机制可以检查目标中是否可能丢失数据并阻止部署(可以禁用这些设置)。从本质上讲,使用 SSDT 部署到主节点就像部署到所有副本一样。
此外,在作为数据库镜像对或可用性组成员的数据库上不允许执行某些操作(例如数据库还原、启用服务代理等),因此如果您的 SSDT 部署尝试执行其中一项操作,则会导致像这样的错误:
消息 1468,级别 16,状态 1,第 1 行无法对数据库“AdventureWorks2012”执行操作,因为它涉及数据库镜像会话或可用性组。不允许对参与数据库镜像会话或可用性组的数据库执行某些操作。
消息 5069,级别 16,状态 1,第 1 行 ALTER DATABASE 语句失败。