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 / 问题 / 87197
Accepted
HMan06
HMan06
Asked: 2014-12-30 08:31:18 +0800 CST2014-12-30 08:31:18 +0800 CST 2014-12-30 08:31:18 +0800 CST

当主节点脱机时,辅助集群 DTC 将不起作用 - SQL Server 问题

  • 772

我一直致力于设置具有两个新 DTC 角色 DTC1 和 DTC2 的集群环境。我设置了 DTC1,它允许群集 VM 和 SQL Server 实例正常运行。但是,当我禁用 DTC1 时,DTC2 将保持在线,但没有 DTC 事务将起作用。实际上,我现在正在使用 Microsoft 技术解决这个问题(运气不佳)。两种 DTC 服务均使用类似的配置进行设置。这里的任何人都知道可能会发生什么?

这是我的设置:

  • 一个集群环境
  • 两个 DTC 角色
  • 两个独立的 ISCSI 磁盘,每个角色一个
  • 两个虚拟机(相同的配置)
  • 每个 VM 上的两个 SQL Server 实例

允许网络配置,一切看起来都已正确设置。

sql-server msdtc
  • 1 1 个回答
  • 1438 Views

1 个回答

  • Voted
  1. Best Answer
    James Lupolt
    2014-12-31T09:30:37+08:002014-12-31T09:30:37+08:00

    我不相信您想通过 Windows 或 SQL Server 配置来实现。根据 Microsoft在此处的指南,SQL Server 将在启动时选择一个 MSDTC 实例,如果该 MSDTC 实例失败,分布式事务将失败:

    如果在 SQL 服务启动时选取的 MSDTC 资源失败会怎样?

    如果特定 SQL Server 组正在使用的 MSDTC 实例失败,SQL Server 不会自动尝试使用下一个可用的 MSDTC 资源,例如默认群集实例或 MSDTC 的本地计算机实例。

    您需要从 SQL Server 组中完全删除失败的 MSDTC 实例才能使用另一个 MSDTC 实例。

    同样,如果您为 SQL Server 创建映射并且 MSDTC 的映射实例失败,您的分布式事务也将失败。如果希望 SQL Server 使用不同的 MSDTC 实例,则必须将 MSDTC 实例添加到 SQL Server 的本地群集组或删除映射。

    这符合您所看到的行为;SQL Server 通过 DTC1 成功打开 DTC 事务,但如果 DTC1 失败,则不会自动切换到使用 DTC2。

    在一些粗略的测试中,我发现:

    • 当失败的 MSDTC 实例恢复时,DTC 事务恢复工作。

    • SQL Server 确实能够在它使用的 MSDTC 资源被删除(而不是刚刚失败)后自动切换到使用不同的 MSDTC 资源而无需重新启动。

    我运行的测试并不全面,并且可能存在这些发现不正确的情况。

    文档中更重要的一点是,您可能根本不需要集群 MSDTC:

    如果我不在 Windows 2008 及更高版本中集群 MSDTC,SQL 会做什么?

    如果群集中没有 MSDTC 资源,则 SQL Server 将使用在节点上本地运行的 MSDTC 服务。

    对于 Windows 2008 及更高版本的 MSDTC,Simple 建议是什么?

    在 Windows 2008 和更高版本中,您可以为每个需要其功能的 SQL Server 实例/组创建 MSDTC 资源的群集实例,或者根本不群集 MSDTC。

    基于此,您应该能够通过依赖本地 MSDTC 资源(在这种情况下,您可能需要将它们配置为在发生故障时自动重新启动)或通过向每个 SQL Server 群集组添加群集 MSDTC 资源来实现相当好的高可用性,如果您出于某种原因更喜欢。Windows 可以处理在失败时重新启动服务,一旦 MSDTC 服务恢复,SQL Server 似乎可以成功恢复创建 DTC 事务。

    如果您试图防止此处未涵盖的情况(例如,如果 DTC 资源失败并且无法自动重新启动会发生什么?)您可能会被迫手动或在应用程序层处理该问题。

    看看微软是否为您提供了不同的建议将会很有趣。

    • 0

相关问题

  • 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