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 / 问题

问题[msdtc](dba)

Martin Hope
Halt_And_Catch_Fire
Asked: 2018-09-19 16:22:16 +0800 CST

等待来自 MSDTC 服务的事务响应时达到超时(30000 毫秒)

  • 0

在一些运行 MSDTC 的服务器上遇到此间歇性问题。

19/09/2018 10:54:38 a.m. -- A timeout (30000 milliseconds) was reached while waiting for a transaction response from the MSDTC$cde1a4e7-dc9d-4ae3-89b9-8114147ae420 service.

19/09/2018 10:54:38 a.m. -- Cluster resource 'MSDTC-SQLServer' of type 'Distributed Transaction Coordinator' in clustered role 'SQL Server' failed.

19/09/2018 10:54:57 a.m. -- The Distributed Transaction Coordinator (cde1a4e7-dc9d-4ae3-89b9-8114147ae420) service terminated unexpectedly.  It has done this 12 time(s).

所有这些服务器都运行 Trend Micro 深度安全代理(反恶意软件保护和入侵防御)。关闭 AV 后问题完全消失。但是长时间关闭 AV 并不是一种选择。

已为 MSDTC 配置了以下 AV 排除项。

  1. MSDTC 服务
  2. MSDTC 日志文件
  3. MSDTC 日志文件夹

我应该添加更多排除项吗?

sql-server msdtc
  • 1 个回答
  • 1682 Views
Martin Hope
Dina
Asked: 2016-05-28 07:20:03 +0800 CST

链接服务器“[name]”的 OLE DB 提供程序“MSDASQL”无法开始分布式事务

  • 1

我有一个从 SQL Server Ent 2012 到 PostgreSQL 9.3 的链接服务器设置和一个存储过程,从中提取 3 个过滤表并将每个表存储在一个临时表中。

在存储过程的末尾有一个带有许多左连接的最终查询,来自本地 SQL 数据库,它包括这 3 个临时表。
我已禁用“为 RPC 启用分布式事务的推广”。使用此存储过程的每 1/6 次或更多尝试都会失败,Web 服务器 Unknown Error Detected System.Data.SqlClient.SqlException (0x80131904): The operation could not be performed because OLE DB provider "MSDASQL" for linked server "POSTGRESQL" was unable to begin a distributed transaction. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection 上的错误为: SQL Server 上没有错误。

链接服务器定义:

EXEC master.dbo.sp_addlinkedserver @server = N'POSTGRESQL', @srvproduct=N'PostgreSQL', @provider=N'MSDASQL', @datasrc=N'PostgreSQL'
 EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'POSTGRESQL',@useself=N'False',@locallogin=NULL,@rmtuser=N'xxxxxx',@rmtpassword='xxxxx'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'POSTGRESQL', @optname=N'remote proc transaction promotion', @optvalue=N'false'

存储过程/查询 (非常简化抱歉)

ALTER PROCEDURE [dbo].[SP_Name]
@DateFrom DATETIME,
@DateTo DATETIME

AS

DECLARE @variableB int

SET @variableB= {some criteria} 

IF (@variableB < 1000)

BEGIN
-- Passthrough to PG for a filtered table, instead of entire table grabbed via open query
    IF OBJECT_ID('tempdb.dbo.#temp_table1', 'U') IS NOT NULL
      DROP TABLE #temp_table1; 

    create table #temp_table1 (column1 int, column2 varchar(60))

    DECLARE @TSQL varchar(max)
    SET  @TSQL = 'select c1, c2 from OpenQuery([POSTGRESQL],''
            select c1, c2 from table1 t where 
            t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + '''''' +'order by c1'')'

    insert into #temp_table1
    EXEC (@TSQL)

    create clustered index temp_index1 on #temp_table1 
    (column1 asc)
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]

-- 2nd table passthrough to PG for a filtered table, instead of entire table grabbed via open query
    IF OBJECT_ID('tempdb.dbo.#temp_table2', 'U') IS NOT NULL
      DROP TABLE temp_table2; 

    create table #temp_table2 (column1 int, column2 varchar(60), column3 int)

    SET  @TSQL = 'select a, b, c from OpenQuery([POSTGRESQL],''
            select a, b, c from table2 t where 
            t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + '''''' +'order by a'')'

    insert into #temp_table2
    EXEC (@TSQL)

-- 3rd table passthrough to PG for a filtered table, instead of entire table grabbed via open query
    IF OBJECT_ID('tempdb.dbo.#temp_table3', 'U') IS NOT NULL
      DROP TABLE temp_table3; 

    create table #temp_table3 (column1 int, column2 varchar(60))

    SET  @TSQL = 'select a1, a2, a3 from OpenQuery([POSTGRESQL],''
            select a1, a2, a3 
            from
            table3 t
            where 
            t.date>=''''' +CONVERT(VARCHAR(15),@DateFrom,102)+ '''''' + 't.date <=''''' +CONVERT(VARCHAR(15),@DateTo,102) + ''''''
{plus other filtering criteria} +'order by a1'')'

    insert into #temp_table2
    EXEC (@TSQL)

IF (@variableB < 1000)

BEGIN

select {many columns}
from {various local tables with left joins}
left join #temp_table1 on {conditions}
left join #temp_table2 on {conditions}
left join #temp_table3 on {conditions}

END

本地 DTC 属性

在此处输入图像描述

  • 我认为正在发生的是,临时表中的 3 个开放查询正在分发,并且不知何故这不起作用。我承认我不太明白这一点——这超出了我的想象。我也知道启用“为 RPC 启用分布式事务的提升”会使失败更频繁地发生。
  • 这再次工作了 5/6 次,失败了大约 1/6 次。所以我不确定发生了什么。
  • 这是 PostgreSQL 上的只读事务 - 我不确定为什么要调用分布式事务。

编辑我在这里 看到这个问题,并认为我不应该遇到这个问题。

编辑 2 我可能在这里发现了一个重复的问题。

linked-server msdtc
  • 1 个回答
  • 5766 Views
Martin Hope
HMan06
Asked: 2014-12-30 08:31:18 +0800 CST

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

  • 3

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

这是我的设置:

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

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

sql-server msdtc
  • 1 个回答
  • 1438 Views
Martin Hope
Joe Hayes
Asked: 2014-08-12 13:54:22 +0800 CST

UOW:将 MSDTC 中列出的 UOW 与 SQL Server 信息相关联

  • 0

我们在 MSDTC 中显示了一些活跃的交易,这些交易已经存在很长时间并且不会消失。它们不是孤立的或有疑问的,只是看起来正常的活跃交易。

我们正试图弄清楚它们是什么以及它们存在的原因。

为此,我试图找到一种方法将 MSDTC 事务列表(组件服务 -> 我的电脑 -> 分布式事务协调器 -> 事务列表)中显示的这些活动事务之一映射到所有信息微软 SQL 服务器。

显然,我所需要的只是一个 UOW ID。

经过几个小时的研究,我在 sys.dm_tran_locks 之外找不到任何包含此信息的内容。我在 sys.dm_tran_locks 上遇到的问题是我的事务没有显示,大概是因为它们当前没有持有任何锁。

其他重要信息:SQL Server 2005。(是的,2005 :( ) 同样,没有什么是“孤立的”或“有疑问的”。交易只是显示为活动状态,但它们永远留在那里。没有集群或任何其他异国情调。这都是非常普通的 SQL Server 2005 标准版。

编辑:我还应该注意到我尝试过:

* SP_WhoIsActive (both with default settings and with more info gathering turned on)
* sys.dm_tran_locks
* sys.dm_exec_sessions
* sys.dm_exec_requests.  
* sys.dm_tran_database_transactions
* sys.dm_tran_database_transactions
* sys.dm_tran_active_transactions

我开始认为您无法从这里到达那里 ;-) 同样,我想将 MSDTC 中的 UOW 与 SQL Server 中的 UOW 相关联,显然,分布式事务仍然处于活动状态但没有锁定。

根据要求,这是 MSDTC 的屏幕截图: MSDTC 屏幕截图

sql-server msdtc
  • 1 个回答
  • 1405 Views
Martin Hope
Daryl
Asked: 2013-11-20 01:22:08 +0800 CST

在客户端计算机上设置 MSDTC 时出现问题

  • 1

我创建了一个使用 MSDTC 的应用程序(在同一个 MS SQL 服务器内的多个数据库上打开一个事务),我们的本地环境设置成功并且 DTCPing、DTCTester 和应用程序都可以工作。然而,当谈到部署时,我在设置客户端计算机以使用服务器的协调器时遇到了问题。

在客户端站点上,我尝试了以下操作:

  • DTC Ping 成功通过
  • 将协调器设置为服务器一会导致出现以下错误“指定的远程主机不存在”
  • 我能够使用主机名 ping 服务器

当我尝试运行 DTC 测试仪时,它输出以下内容:

Executed: dtctester.exe
DSN:  accdim
User Name: sa
Password: <hidden>
tablename= #dtc16397
Creating Temp Table for Testing: #dtc16397
Warning: No Columns in Result Set From Executing: 'create table #dtc16397 (ival int)'
Initializing DTC
DtcGetTransactionManager failed: 8004d01b
DtcGetTransactionManager Call Error: Indicates unable to connect to the transaction manager, or the transaction manager is unavailable.
windows msdtc
  • 1 个回答
  • 1238 Views

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