SQL Management Studio(2016年之前的版本)
不幸的是,有一些警告使在SQL Management Studio中使用应用程序意图有些痛苦:
要以ReadOnly意图手动连接,从对象资源管理器中弹出“ 连接到服务器”对话框后,用户必须记住:
- 单击选项>>。
- 转到“ 其他连接参数”选项卡。
- 输入其他参数为ApplicationIntent = ReadOnly;
- (注意:输入附加连接参数后,用户不得单击选项<<按钮,否则参数将丢失。)
- 单击连接。
- 始终通过在“ 对象资源管理器”视图中右键单击所需的数据库并选择“ 新建查询”来启动查询窗口,以避免遇到下面的#3警告。
适用的警告如下:
- 尽管可以使SQL Management Studio与只读意图进行连接,但是当将连接添加到已注册服务器时,它不会存储其他连接参数。
- 手动编辑RegSrvr.xml文件中的本地注册服务器以添加应用程序意图时的行为非常不一致,并且每次通过GUI进行更改时都会被覆盖,从而使此解决方法不可靠。
- 在打开查询窗口之前,必须选择Always On数据库。否则,连接将路由到主服务器。如果在查询窗口已打开到非始终在线数据库后,尝试使用查询窗口的下拉列表选择数据库,则会出现错误对话框。如果在已将查询窗口打开到非始终在线数据库后尝试使用USE语句将数据库更改为始终在线数据库,则在尝试执行SQL查询时结果如下所示:
Msg 979, Level 14, State 1, Line 1
The target database ('AlwaysOnDatabase') is in an availability group
and currently does not allow read only connections. For more
information about application intent, see SQL Server Books Online.
SQL Management Studio(版本2016或更高版本)
SQL Server Management Studio 2016或更高版本可以使用只读应用程序意图进行连接(使用与以前版本相同的6个步骤),并且它确实存储了其他连接参数。还有一些警告:
- 对象资源管理器视图将不会枚举AlwaysOn数据库中的任何表或其他对象。尝试扩展它们会导致访问拒绝消息。
- 您不能同时打开到同一侦听器的只读和非只读连接。
- 数据库中对象名称的Intellisense不起作用。(奇怪的是,在查询设计器中可以很好地枚举对象,您可以从右键单击菜单中使用“ 编辑器中的设计查询”来启动对象。)
- 先前版本的警告中的警告3仍然适用。
第三方产品
当您保存连接时,LinqPad会存储包括应用程序意图和数据库在内的整个连接字符串,因此对于对Always On数据库执行只读查询可能是一个可行的选择。