Always On可用性组,始终将用户重定向到只读实例


9

我们有一个Always On可用性组,其中有一个主服务器和一个已启用读取的辅助服务器。我们的实施团队有一个用户,该用户使用数据库检查他们打算放入数据库的数据的正确性。

用户仅具有读取数据库的权限,但是当用户通过AG Listener连接(通过SSMS)时,他们始终连接到活动节点。

我试图让他们直接访问只读实例,但是它们陷入了困境,在一两天之后,它们又又回到了活动节点上。

SQL Server是否可以通过某种方式说出该用户始终具有只读意图,并将其重定向到那里?

注意:我尝试在其他连接参数中设置'ApplicationIntent = ReadOnly',但这似乎没有重定向到辅助节点,也不是理想的解决方案,因为它们不可避免地会忘记为新的启动程序进行设置。

SQL Server 2012 Enterprise,可用性组1个主要的,1个可读性次要的同步提交。

我不打算让用户连接到链接服务器或通过任何其他服务器。用户通过SSMS(没有其他应用程序)直接连接到数据库,并且我希望AG侦听器(或附近的东西)能够将用户定向到辅助节点(如果有)(因为那里只有读取访问权限)无需用户做任何事情就可以访问主数据库,因为用户在计算机之间移动并且会忘记添加应用程序意图。另外,我发现将其添加到其他连接参数并不总是将您定向到辅助节点。


除了以下注释之外,您还需要在要连接的AG中指定数据库。
swasheck

Answers:


4

我没有完整的问题的答案(尽管我今天回答了类似问题的答案https://dba.stackexchange.com/a/137844/36812),但是您提到使用ApplicationIntent = ReadOnly不起作用正确地。

您是否设置了只读路由URL?因为它不是开箱即用的,如果您不这样做,那么这些设置和该标志将不起作用。我认为,如果您能做到这一点,那么您可以开始重新评估您的要求。

MSDN上的说明https://msdn.microsoft.com/zh-cn/library/hh710054.aspx,最容易在PowerShell中完成。

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"

Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica

1

Ste,您需要的是指向解决方案或设置的地方。不幸的是,目前这些都不以“现成的”形式存在。如果Microsoft将其包含在Registered Server的连接设置中以便可以保存它,那将是非常不错的选择,但是可惜他们没有这样做。

这为您提供了以下两种选择之一:

  • 自己写东西
  • 改变用户行为

我在SNAC-SQL Native Access Client的Microsoft下载中找到了可能满足您要求的内容。这将使您可以编写少量代码,为用户提供一个按钮,以直接访问只读辅助数据库。 https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/

另一种可能性是在通过SSMS连接时强制用户填写连接参数对话框。要强制执行此行为,您需要修改主服务器和辅助服务器上的登录名,拒绝连接到主服务器并允许连接到辅助服务器。您可以使用SQL Agent作业来检查服务器的状态并相应地设置登录名。

诚然,我没有尝试过后者,但从理论上讲应该可以。


-2

看起来这是SQL Server 2019中的一项功能。

辅助副本到主副本的读/写连接重定向(始终在可用性组中)在官方文档中:

SQL Server 2019预览版CTP 2.0为Always On可用性组引入了从副副本到主副本的读/写连接重定向。读/写连接重定向可在任何操作系统平台上使用。它允许将客户端应用程序连接定向到主副本,而不管连接字符串中指定的目标服务器如何。

例如,连接字符串可以定位到辅助副本。根据可用性组(AG)副本的配置和连接字符串中的设置,可以将连接自动重定向到主副本。


我不确定在这里是否可以看到此新功能的相关性。OP的方案似乎与此功能所针对的方案不同。OP希望将只读连接重定向到辅助(只读)节点,而此新功能的文档说这是用于将读/写连接重定向到主节点。您能否详细说明如何使用新功能来解决相关问题?
Andriy M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.