MSDTC故障排除,DTCTester用法 (二)
摘自:https://support.microsoft.com/zh-cn/kb/293799#bookmark-4
————————————————————————————
概要
下载 DTCTester 工具
下列文件已可从 Microsoft 下载中心下载:
119591如何从在线服务获得 Microsoft 支持文件
Microsoft 已对此文件进行病毒扫描。Microsoft 使用自该文件发布日期起可用的最新的病毒检测软件。该文件存储在安全增强型服务器上,以防止对文件进行任何未经授权的更改。DTCTester 工具的作用是什么?
- 通过使用数据源名称 (DSN)、 用户名和密码,您在命令行上使用提供的默认网络库建立与 SQL Server 的连接。
- 创建一个临时表。
- 登记在事务中的连接。
- 会在临时表上的插入。
- 提交分布式的事务。
- 选择插入的值,以确保它已提交。
- 关闭连接。
如何使用 DTCTester 工具
- 为您的 SQL Server ODBC 控制面板实用程序中通过创建 ODBC 数据源。
- 从命令行执行以下命令︰
dtctester <dsn name><user name><password>替换为您的环境相应的括号中的值。
其中 DTCTester 工具失败的常见原因
- 防火墙有关闭的正确端口。
- 没有坏的 WINS/DNS 条目。
- 错误配置的 SQL Server 群集或双网卡。
- 其他错误配置的网络设置。
DTCTester 失败时发生的错误的示例
Command Line: dtctester bad baduser badpass Executed: dtctester DSN: bad User Name: baduser Password: badpass tablename=#dtc7421 Creating Temp Table for Testing: #dtc7421 Warning: No Columns in Result Set From Executing: 'create table #dtc7421 (ival int)' Initializing DTC Beginning DTC Transaction Enlisting Connection in Transaction Error: SQLSTATE=25S12, Native error=-2147168242,msg='[Microsoft][ODBC SQL Server Driver] Distributed transaction error' Error: SQLSTATE=24000, Native error=0,msg=[Microsoft][ODBC SQL Server Driver]Invalid cursor state Aborting DTC Transaction Releasing DTC Interface Pointers Successfully Released pTransaction Pointer
成功的 DTCTester 输出的示例
Command Line: dtctester test sa Executed: dtctester DSN: test User Name: sa Password is assumed to be NULL. Connecting to the database tablename= #dtc7488 Creating Temp Table for Testing: #dtc7488 Warning: No Columns in Result Set From Executing: 'create table #dtc7488 (ival int)' Initializing DTC Beginning DTC Transaction Enlisting Connection in Transaction Executing SQL Statement in DTC Transaction Inserting into Temp...insert into #dtc7488 values (1) Warning: No Columns in Result Set From Executing: 'insert into #dtc7488 values (1) ' Verifying Insert into Temp...select * from #dtc7488 (should be 1): 1 Press enter to commit transaction. Committing DTC Transaction Releasing DTC Interface Pointers Successfully Released pTransaction Pointer. Disconnecting from Database and Cleaning up Handles
DTC 的建议到打开的端口
输入端口 | 端口的目的 |
---|---|
打开 135 | RPC EPM (终结点映射程序) |
打开 1433 | TDS SQL 通信使用 TCP/IP 时 |
打开 1434 | SQL 2000 集成安全性 |
打开 5100 5200 | MSDTC [EPM 通过动态分配端口] |
参考资料
191168信息︰ 错误"-2147168246 (8004d00a)"无法在调用对象的事务中登记
其他信息,请参阅以下 Microsoft 网站上的白皮书︰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述