首页 > 数据库 >当“可读辅助”为“只读”时,使用 SSMS 连接到 SQL Server 可用性组副本

当“可读辅助”为“只读”时,使用 SSMS 连接到 SQL Server 可用性组副本

时间:2023-07-23 22:11:51浏览次数:42  
标签:副本 AG 只读 SSMS Server SQL 连接

问题

当连接到“可读辅助”设置为“仅读取意图”的SQL Server AlwaysOn 数据库副本时,您会收到以下错误消息:

使用 SQL Server Management Studio (SSMS)

 解决方案

首先我们需要了解为什么会出现这个错误。

通过 SQL Server Management Studio (SSMS) 连接到数据库时,错误消息不清楚,但查询抛出的错误非常清楚地说明了发生这种情况的原因。

在可用性副本上配置只读访问时, 您有 3 个选项:

  1. 否- 不允许用户连接到该副本的辅助数据库。它们不可用于读取访问。这是默认设置。
  2. 是- 允许与此副本的辅助数据库建立所有连接,但仅限于读取访问。辅助数据库均可供读取访问。
  3. 只读 -只允许对此副本的辅助数据库进行只读连接。辅助数据库均可供读取访问。

仅读意向副本意味着辅助副本仅接受为此目的显式配置的连接,当您尝试连接到仅配置为读意向的 AG 辅助副本数据库而不显式使用正确的参数时,就会出现问题。

有两种选择可以解决此问题:

连接到应用程序意图=只读的副本

连接到 AG 辅助副本实例时,请使用ApplicationIntent=ReadOnly 参数。

要从 SSMS 执行此操作,请在连接之前在连接窗口中按“选项>>”按钮。

连接到sql服务器

然后转到“其他连接参数”选项卡并 在文本框中输入ApplicationIntent=ReadOnly 。您现在应该可以连接了。

使用应用程序意图连接到 sql server

对于应用程序,您需要在连接字符串中添加适当的参数。这是一个例子:

("Driver={SQL Server Native Client 11.0};server=AG_Listener;Database=AdventureWorks;trusted_connection=yes;ApplicationIntent=readonly”)

使用sqlcmd实用程序连接时,还需要提供正确的参数 (-K)

sqlcmd -SAG_Listener -E -dDatabaseName -Kreadonly

  

将副本可读辅助选项配置为是

仅当您确定不会影响任何应用程序时才应遵循此选项,因为更改此配置后它不会自动将它们重定向到只读副本。

注意:需要在主副本服务器上执行以下配置。

 

USE [master]
GO
ALTER AVAILABILITY GROUP [AG_Name]
MODIFY REPLICA ON N'ReplicaInstance' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL))
GO

 

  

或者,您可以使用 SSMS 通过编辑 AG 属性(AlwaysOn 高可用性/可用性组/<“AG 名称”>)来更改配置,然后更改可读辅助值,如下所示:

allon副本辅助设置

其他注意事项

使用 AG 侦听器而不是 SQL Server 实例名称连接到 AG 数据库始终是一个好的策略。侦听器将保证您始终连接到主副本或只读辅助副本,具体取决于连接参数。

引用

https://www.mssqltips.com/sqlservertip/4511/connect-to-sql-server-availability-group-replica-with-ssms-when-readable-secondary-is-readintent-only/

 

标签:副本,AG,只读,SSMS,Server,SQL,连接
From: https://www.cnblogs.com/lkj371/p/17576034.html

相关文章

  • 使用 ONLINE 选项重建 SQL Server 索引
    问题随着时间的推移,我们数据库的正常运行时间要求越来越大,这意味着我们必须对数据库进行维护的停机时间越来越小。本技巧将介绍SQLServer2005中引入的一项功能,该功能允许我们在重建索引时保持索引在线并可访问。解决方案SQLServer在线索引重建背景信息在我们讨论细节之......
  • SQL Server 中的索引碎片报告
    问题虽然索引可以使查询的执行速度加快数倍,因为它们可以使查询过程更快,但也存在与之相关的开销。它们会消耗额外的磁盘空间,并且每当数据更新、删除或追加到表中时都需要额外的时间来更新自身。此外,当您执行任何数据修改操作(INSERT、UPDATE或DELETE语句)时,可能会出现索引碎片,并......
  • 学习MySQL,创建表,数据类型
    连接本地mysql语句mysql-hlocalhost-uroot-prootMySQL通用语法DDL数据库操作DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)查询所有数据库showdatabases;创建数据库语法:createdatabase[ifnotexists]数据库名称[defaultcharset字符编码];createdat......
  • SQL Server 碎片和索引维护技巧
      https://www.mssqltips.com/sql-server-tip-category/39/fragmentation-and-index-maintenance/......
  • 查询mysql 某个表下一个自增id
    查询MySQL某个表下一个自增ID作为一名经验丰富的开发者,你经常需要与数据库打交道。在MySQL中,自增ID是一种常见的使用方式,用于唯一标识每一条记录。当你需要查询某个表的下一个自增ID时,可以按照以下步骤进行操作。步骤概览下面是整个查询MySQL某个表下一个自增ID的流程概览:步......
  • 查询mysql 安装版本,mac
    查询MySQL安装版本在Mac上使用MySQL时,有时候我们需要查看MySQL的安装版本信息。本文将介绍如何通过命令行和MySQL客户端来查询MySQL的安装版本。通过命令行查询MySQL安装版本在终端中执行以下命令可以查询MySQL的安装版本:mysql--version这个命令会返回MySQL的版本信息,例如:m......
  • 查询MySQL公式字段重命名
    查询MySQL公式字段重命名作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何实现“查询MySQL公式字段重命名”。下面将详细介绍整个流程,包括每一步需要做什么以及需要使用的代码及其注释。流程图下表展示了查询MySQL公式字段重命名的流程。步骤动作代码1连接......
  • 查看mysql模式
    查看MySQL模式的流程本文将介绍如何通过命令行和SQL语句查看MySQL数据库的模式。步骤下面是查看MySQL模式的流程表格:步骤描述1连接到MySQL服务器2选择要查看的数据库3查看数据库中的所有表4查看表的结构5查看表的数据6查看表的索引7查看表的......
  • 未启用当前数据库的 sql server service broker
    如何启用SQLServerServiceBroker流程概述以下是启用SQLServerServiceBroker的步骤:步骤描述步骤1检查数据库的兼容性级别步骤2启用数据库的ServiceBroker步骤3创建ServiceBroker对象步骤4启用ServiceBroker消息传递步骤5创建消......
  • 为什么 idea连接 sql server 连接成功却显示不出来表?
    为什么IDEA连接SQLServer连接成功却显示不出来表?概述在使用IDEA连接SQLServer数据库时,有时候会遇到连接成功,但无法显示出表的情况。这个问题通常是由于配置不正确或者依赖缺失引起的。下面将详细介绍整个问题的解决流程以及每一步需要做的操作。解决流程步骤操作......