如何在 SQL 2016 中处理可用性组

Posted

技术标签:

【中文标题】如何在 SQL 2016 中处理可用性组【英文标题】:How to address availability groups in SQL 2016 【发布时间】:2017-10-30 12:05:46 【问题描述】:

如何从 SQL 可用性组中的数据库中选择信息。 例如。我有 2 个数据库,它们位于同一服务器上的 2 个单独的可用性组中,我在 AG1 DB1 中并尝试访问 AG2 DB2 中的表。我知道如果它们在同一台服务器上,我可以只使用数据库名称,但如果它们发生故障转移,此查询将失败。

我环顾四周,但看不到。理想情况下,我认为它会是 AG2.DB2.DBO.table 但这似乎不起作用。

【问题讨论】:

【参考方案1】:

您需要将链接服务器添加到您从中查询的 AG。首先,您需要 AG2 上的 SQL 身份验证帐户,该帐户至少对您希望从 AG1 查询的对象具有读取权限——除非您希望使用用户的凭据。您将使用此帐户来创建链接服务器。完成此操作后,您将像上面所说的那样使用 server.database.schema.table 查询它

    在 AG2 DB 上创建一个 SQL 身份验证帐户,用于链接服务器(如果尚不存在)。它需要访问您希望从 AG1 DB 查询的所有对象。 在 AG1 服务器下的 SSMS 中,导航到 Server Objects > Linked Servers 右键单击 Linked Servers 文件夹并选择 New Linked Server 在链接服务器下输入服务器名称 选择 SQL Server 单选按钮 点击左侧的安全页面 单击“使用此安全上下文”并输入 SQL 身份验证帐户信息。如果您愿意,请随意使用其他选项之一。 点击确定

现在,您可以查询该数据库了。

Linked Server

Create Linked Server

One of Many Tutorials

【讨论】:

以上是关于如何在 SQL 2016 中处理可用性组的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组

MS SQL/Powershell:如何杀死可用性组中辅助节点上的后台进程

如何在 Linux 上跨可用性组副本同步 SQL Server 代理作业?

SQL群集下安装多实例并启用AlwaysOn可用性组功能

SQL Server 可用性组和不同的排序规则

从同步自动故障转移 AlwaysOn 可用性组 AAG 传送日志