AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 98056
Accepted
DBAuser
DBAuser
Asked: 2015-04-17 07:27:25 +0800 CST2015-04-17 07:27:25 +0800 CST 2015-04-17 07:27:25 +0800 CST

具有只读应用程序意图的 SSMS 注册服务器

  • 772

我们正在使用 AlwaysOn 进行 SQL Server 2014 POC 测试,其中一位用户询问有关使用本地服务器组中的注册服务器保存具有ReadOnly Intent 的 SSMS 的配置。这样他们就不必在每次需要访问只读副本时都输入别名。

不幸的是,与常规对象浏览器不同,已注册的服务器中没有添加 ApplicationIntent 选项的选项。

我从 Microsoft 看到这篇关于更改 RegSrvr.xml 中的连接字符串的文章。

https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups

我尝试了他们的建议,当通过注册服务器中的本地服务器连接时,它没有连接到正确的副本节点。

使用连接窗口 > 附加连接参数中的选项时,ReadOnly选项在对象资源管理器中工作正常。但它不会保存对连接所做的更改。

有谁知道使用 SSMS 保存具有ReadOnly Intent 属性的配置的任何替代解决方案?在此先感谢您的帮助。

sql-server sql-server-2014
  • 6 6 个回答
  • 10635 Views

6 个回答

  • Voted
  1. JamieSee
    2016-07-01T13:11:51+08:002016-07-01T13:11:51+08:00

    SQL Management Studio(2016 之前的版本)

    不幸的是,有一些警告使得在 SQL Management Studio 中使用 Application Intent 有点痛苦:

    要使用 ReadOnly 意图手动连接,从对象资源管理器调出连接到服务器对话框后,用户必须记住:

    1. 单击选项>>。
    2. 转到附加连接参数选项卡。
    3. 输入附加参数为 ApplicationIntent=ReadOnly;
    4. (注意:用户在输入附加连接参数后不能点击选项<<按钮,否则参数将丢失。)
    5. 单击连接。
    6. 始终通过右键单击对象资源管理器视图中的所需数据库并选择新查询来启动查询窗口,以避免遇到下面的 #3 警告。

    适用的警告如下:

    1. 尽管您可以让 SQL Management Studio 使用只读意图进行连接,但在将连接添加到注册服务器时,它不会存储附加连接参数。
    2. 手动编辑 RegSrvr.xml 文件中本地注册的服务器以添加应用程序意图时的行为极其不一致,并且在任何时候通过 GUI 进行更改时都会被覆盖,从而使此解决方法不可靠。
    3. 在打开查询窗口之前必须选择 Always On 数据库;否则,连接将被路由到主服务器。如果您在查询窗口已经打开到非始终打开的数据库后尝试使用查询窗口的下拉菜单选择数据库,您将收到一个错误对话框。如果在查询窗口已经打开到非 Always On 数据库之后尝试使用 USE 语句将数据库更改为 Always On 数据库,则在尝试执行 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 个步骤)并且它确实存储了附加连接参数。仍然有一些警告:

    1. 对象资源管理器视图不会枚举 AlwaysOn 数据库中的任何表或其他对象。尝试扩展它们会导致访问被拒绝消息。
    2. 您不能同时打开同一个侦听器的只读和非只读连接。
    3. 数据库中对象名称的 Intellisense 不起作用。(奇怪的是,对象在查询设计器中被枚举得很好,您可以使用编辑器中的设计查询启动......从右键菜单中。)
    4. 先前版本的警告中的警告 3 仍然适用。

    第三方产品

    当您保存连接时, LinqPad 会存储整个连接字符串,包括应用程序意图和数据库,因此可能是对 Always On 数据库执行只读查询的可行选项。

    • 4
  2. jyao
    2015-04-22T15:51:29+08:002015-04-22T15:51:29+08:00

    是否可以创建配置文件,然后在 SSMS 中自动创建必要的注册服务器?正如我在 MSSQLTips 文章中提到的:

    在 SQL Server Management Studio (SSMS) 中自动注册和维护服务器

    • 0
  3. Ironman Gooch
    2015-09-26T08:33:41+08:002015-09-26T08:33:41+08:00

    您是否尝试过 PowerShell 脚本,但使用另一种拼写(带空格)来表示应用程序意图?还是我把连接方法弄混了?

    Server=$regsrv ; integrated security=true;Initial Catalog=dbname;
    Application Intent=ReadOnly"); 
    

    使用只读应用程序意图连接到 SQL Server

    • 0
  4. Best Answer
    DBAuser
    2016-09-01T05:47:32+08:002016-09-01T05:47:32+08:00

    与注册服务器一起使用时,此问题已在 SQL 2016 SSMS 中得到修复。我能够将 ReadOnly Intent 连接注册为本地服务器组的一部分,并打开保存的连接以供将来使用。感谢您对此的帮助。

    • 0
  5. marclancy
    2017-06-08T08:58:06+08:002017-06-08T08:58:06+08:00

    我无法发表评论,但正在添加 DBAUser 的答案。

    在注册的服务器区域内设置连接时,我看不到在 GUI 中添加应用程序意图的选项。

    我必须使用对象资源管理器(使用Data Source=<Listener>;Initial Catalog=<Database>;ApplicationIntent=ReadOnly)连接,然后在连接后注册服务器。

    或添加Initial Catalog=<Database>;ApplicationIntent=ReadOnly到 .regsrvr 文件中的连接字符串。

    • 0
  6. Tony Castro
    2016-02-03T20:39:24+08:002016-02-03T20:39:24+08:00

    您可能错过了难题的重要部分,或者至少我在您的问题中没有看到它:

    ApplicationIntent=readonly是等式的一半。您还需要传递参数MultiSubnetFailover=True。

    例如,在 Additional Connection Parameters 选项卡中,您要输入以下内容:

    MultiSubnetFailover=True;ApplicationIntent=readonly;
    
    • -1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve