我们正在使用 AlwaysOn 进行 SQL Server 2014 POC 测试,其中一位用户询问有关使用本地服务器组中的注册服务器保存具有ReadOnly Intent 的 SSMS 的配置。这样他们就不必在每次需要访问只读副本时都输入别名。
不幸的是,与常规对象浏览器不同,已注册的服务器中没有添加 ApplicationIntent 选项的选项。
我从 Microsoft 看到这篇关于更改 RegSrvr.xml 中的连接字符串的文章。
我尝试了他们的建议,当通过注册服务器中的本地服务器连接时,它没有连接到正确的副本节点。
使用连接窗口 > 附加连接参数中的选项时,ReadOnly选项在对象资源管理器中工作正常。但它不会保存对连接所做的更改。
有谁知道使用 SSMS 保存具有ReadOnly Intent 属性的配置的任何替代解决方案?在此先感谢您的帮助。
SQL Management Studio(2016 之前的版本)
不幸的是,有一些警告使得在 SQL Management Studio 中使用 Application Intent 有点痛苦:
要使用 ReadOnly 意图手动连接,从对象资源管理器调出连接到服务器对话框后,用户必须记住:
适用的警告如下:
SQL Management Studio(2016 或更高版本)
SQL Server Management Studio 2016 或更高版本可以使用只读应用程序意图连接(使用与以前版本相同的 6 个步骤)并且它确实存储了附加连接参数。仍然有一些警告:
第三方产品
当您保存连接时, LinqPad 会存储整个连接字符串,包括应用程序意图和数据库,因此可能是对 Always On 数据库执行只读查询的可行选项。
是否可以创建配置文件,然后在 SSMS 中自动创建必要的注册服务器?正如我在 MSSQLTips 文章中提到的:
在 SQL Server Management Studio (SSMS) 中自动注册和维护服务器
您是否尝试过 PowerShell 脚本,但使用另一种拼写(带空格)来表示应用程序意图?还是我把连接方法弄混了?
使用只读应用程序意图连接到 SQL Server
与注册服务器一起使用时,此问题已在 SQL 2016 SSMS 中得到修复。我能够将 ReadOnly Intent 连接注册为本地服务器组的一部分,并打开保存的连接以供将来使用。感谢您对此的帮助。
我无法发表评论,但正在添加 DBAUser 的答案。
在注册的服务器区域内设置连接时,我看不到在 GUI 中添加应用程序意图的选项。
我必须使用对象资源管理器(使用
Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly
)连接,然后在连接后注册服务器。或添加
Initial Catalog=<Database>;ApplicationIntent=ReadOnly
到 .regsrvr 文件中的连接字符串。您可能错过了难题的重要部分,或者至少我在您的问题中没有看到它:
ApplicationIntent=readonly
是等式的一半。您还需要传递参数MultiSubnetFailover=True
。例如,在 Additional Connection Parameters 选项卡中,您要输入以下内容: