问题标签 [alwayson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
244 浏览

sql-server - SQL Server Always On + 更改 SPID 的隔离级别

是否有任何理由无法更改始终在线配置中针对主数据库运行的 spid 的隔离级别?

场景:我们正在运行 CRM Dynamics 升级工具。尝试在 SQL Server 中运行以下命令时被阻止:

在检查升级工具的错误日志时,它说

无法对数据库“My_CRM_DB”执行该操作,因为它涉及数据库镜像会话或可用性组。不允许对参与数据库镜像会话或可用性组的数据库执行某些操作。

我想了解这是为什么。我在 technet 上找不到任何在线信息说我不应该被允许设置 spid 的隔离级别以在使用 AlwaysOn 时读取已提交

0 投票
1 回答
2789 浏览

sql-server - 在 SQL Server AlwaysOn 可用性组中创建可用性组侦听器

我会尽量做到简洁明了。我真的希望有人可以帮助我,因为我不喜欢基础设施,所以我浪费了很多时间。

目标:使用两个 SQL Server 实例配置 AlwaysOn,通过可用性组侦听器连接到数据库。

错误:SQL Server 错误:19458

当前配置:

  • 我在同一台服务器中有两个使用 Hyper-V 管理的独立虚拟机。
  • 两者都在同一个子网中。
  • 两者都安装了 Windows 2012 R2 和 SQL Server 2014 SP2。
  • 两台服务器都启用了故障转移群集功能。
  • 我创建了一个包含两个节点和一个集群网络的集群。
  • 我在 SQL Server 中创建了一个可用性组
  • 我已将两个 SQL Server 实例添加到可用性组
  • 同一个域用户是两个 VM 中的管理员。
  • 两个 VM 中的防火墙均已禁用。

...但是当我尝试添加可用性组侦听器时,我收到 SQL Server 错误 19458。

我尝试了什么:

  • 我看到很多人谈论在两台服务器中使用相同的排序规则:SQL_Latin1_General_CP1_CI_AS

可用性组侦听器 - 定位不正确的节点

辅助节点已使用不同的排序规则设置。因此,我卸载了该实例并使用正确的排序规则再次安装它。我重新配置了节点和可用性副本,但仍然出现相同的错误。

  • 然后我尝试使用静态 IP 选项,但我得到一个不同的错误:

SQL Server 错误:19456

  • 我还在某处读到,如果我在辅助副本之前创建侦听器,它可能会起作用。我这样做了,但是由于同样的错误,无法添加辅助副本。

  • 如此处所述,通过授予 AD 中的对象创建权限不起作用,无法创建可用性组侦听器

可能有用:同步在两个 VM 之间按预期工作。

非常感谢。

0 投票
1 回答
896 浏览

sql - SQL Server AlwaysOn 中的脏读

我有一对 SQL Server 2014 数据库设置为同步 AlwaysOn 可用性组。

两台服务器都设置为Synchronous commit可用性模式,会话超时为 50 秒。辅助设置为Read-intent only可读辅助。

如果我写入主节点,然后立即从辅助节点读取(通过ApplicationIntent=ReadOnly),我会一直读取脏数据(即写入前的状态)。如果我在写和读之间等待大约一秒钟,我会得到正确的数据。

这是预期的行为吗?如果是这样,我能做些什么来确保从辅助设备读取的数据是最新的吗?

我想将辅助节点用作主节点的只读版本(以及故障转移),以减少主节点的负载。

0 投票
1 回答
2899 浏览

sql-server - 无法 ping Windows 集群的 IP 并且无法连接侦听器 IP

我使用的是 windows server 2012R2,最近我创建了一个有 2 个节点的 WSFC,两个节点都在同一个子网中,并为集群分配了一个静态 IP。但是我只能从当前节点ping集群的IP,即使在同一子网中的node2和其他服务器也无法ping通。

因为我需要这个集群用于 SQL 服务器,但我可以创建一个可用性组和侦听器。但是侦听器 IP也无法 ping,我尝试从辅助服务器进行 telnet 也无法正常工作

我的问题是我想从同一子网中的任何服务器访问监听。

0 投票
1 回答
1073 浏览

sql-server - 高可用性副本 SQL Server 2014 中的只读意图

我们在 Always On 集群中有 2 个 sql server 副本,当我们测试性能问题时,我们看到只有主节点在工作(读取和写入)。

主要设置为读写,辅助设置为只读意图,我们希望将简单的选择查询发送到辅助副本,而写入查询将发送到主要副本。

有没有一种方法可以在不为两种情况下使用 2 个不同的连接字符串创建 2 个不同的服务的情况下进行配置(第一个是读写,第二个是只读)。

0 投票
2 回答
1325 浏览

c# - 陷阱 SQL 故障转移异常

我正在利用 NuGet 包Polly来实现捕获故障转移 SQL 异常的重试逻辑。我在 Azure 中设置了 SQL Server Always On High Availability。

我不想捕获所有 SQL 异常(这将是不正确的),而是希望捕获发生故障转移时发生的特定 SQL 异常。

从 SSMS 中,我显示仪表板,然后我能够人为地触发故障转移来测试我的代码。最初,我让所有异常都冒泡(所以没有陷阱)。然后我会排队进行故障转移并查看我的日志以查看引发了什么 SQL 异常。随后,我能够捕获由于故障转移而发生的所有 SQL 异常。

我的问题是,这是一份完整的清单吗?在 SQL Server 故障转移上实现重试逻辑的其他人是否会捕获任何其他 SQL 异常?

我已经用逻辑尝试了将近 100 次故障转移,但没有出现任何问题。这当然并不意味着我已经捕获了全部的故障转移 SQL 异常。

重试逻辑有 Policy.Handle(se => IsFailoverSqlException(se))。当故障转移排队时,根据我在代码中的位置,我看到了我在下面捕获的三个 SQL 异常。

0 投票
1 回答
346 浏览

sql - 从同步自动故障转移 AlwaysOn 可用性组 AAG 传送日志

我有一个使用同步提交和自动故障转移运行的 AlwaysOn 可用性组。例如,作为 SQL01 连接到节点 SQL01A 或 SQL01B。

我想让这些数据可用于另一台服务器 SQL02 上的仓储,由于大量更改和大量读取,我们无法使用 AAG 异步提交,因为它落后并导致高等待。

因此,我决定每天登录一次 SQL02。但是,由于节点 SQL01A 和 SQL01B 之间的 AAG 故障转移,我不确定围绕此的最佳实践。

我已经从 SQL01A 设置了 LSBackup、Copy、Restores。然后故障转移到 SQL01B 并进行设置。但是,然后我的作业在复制和还原时出错,因此我可以在每个作业上添加一个额外的步骤以检查它是否是主要副本或还原作业,如果不是则退出,但这看起来很混乱,我觉得我错过了一些东西?

任何建议将不胜感激。

0 投票
0 回答
75 浏览

sql-server - 为什么主节点关闭时FC会关闭

我有一个带有 2 个节点的 alwaysOn AG:
主节点:192.168.66.2
辅助节点:192.168.66.6
集群 IP:192.168.6.3
侦听器 IP:192.168.66.10
FileshareWithness
我在主服务器中创建具有 2 个节点的集群
现在我的问题是主服务器是否关闭,集群即将关闭!!!!
肿瘤坏死因子

0 投票
2 回答
780 浏览

sql-server - SQL Server AlwaysON 从多个辅助服务器读取

我在我的一个环境中配置了永远在线。

我的问题:
我希望我的应用程序将从两个从属服务器读取(例如 SQL2 和 SQL3,以防它们是从属服务器,而 SQL1 是主服务器)。

有可能吗,如果有,我是怎么做的

我已经配置了路由表,例如:

10X 在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
443 浏览

sql - 我的应用程序无法在 SQL Server 中执行存储过程

我有一个新的 AlwaysOn 环境,我们在其中移动了旧的 SQL Server 2008 复制数据库。我在两个环境之间进行了复制,当我进行手动故障转移时,它工作得非常好。

我遇到的问题是应用程序无法执行存储过程。我们测试了 SQL Server 2008 和新的 SQL Server 2012 版本。存储过程像多年来一样工作,并且没有任何改变。

在运行应用程序作业以创建文档并使用分析器查找两者之间的差异时,我还进行了另一项测试。我发现,在第一个 SQL Server 2008 环境中,我看到了存储过程的执行位置,以及存储在表中的结果。使用 SQL Server 2012 Profiler 结果,我看不到相同的存储过程执行。在这些行中,我唯一真正看到的是语句应该在哪里执行。但是,在分析器的末尾,我确实看到了通过邮件获取的语句在哪里执行并统计“在不允许空值的列中不允许空值”。这是一个真实的陈述。该列不允许空值。我已经仔细检查了许可,一切都匹配。

所以我的问题是为什么应用程序不能执行存储过程?

错误是:

这是我们在此过程中遇到的错误。错误:错误:PS 自动更改过程模型。服务任务失败 PS 自动更改,版本 60:实例 ID 37486 查看更改节点:StoredProcedureServiceTask,SQL Server 异常:无法将值 NULL 插入列“jobID”,表“Docfinity10_Reporting.dbo.TFBAudit_BPMJobInfo”;列不允许空值。插入失败。