MSDTC故障排除,DTCTester用法 (二)

摘自:https://support.microsoft.com/zh-cn/kb/293799#bookmark-4

————————————————————————————

概要
DTCTester 测试指定的 Microsoft SQL Server 针对分布式的事务。此工具有助于通过防火墙或网络测试分布式的事务。DTCTester 使用 ODBC API 对 SQL Server 数据库执行分布式的事务。

 

下载 DTCTester 工具

下列文件已可从 Microsoft 下载中心下载:
Download下载 DTCTester 软件包。有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591如何从在线服务获得 Microsoft 支持文件
Microsoft 已对此文件进行病毒扫描。Microsoft 使用自该文件发布日期起可用的最新的病毒检测软件。该文件存储在安全增强型服务器上,以防止对文件进行任何未经授权的更改。

 

DTCTester 工具的作用是什么?

  • 通过使用数据源名称 (DSN)、 用户名和密码,您在命令行上使用提供的默认网络库建立与 SQL Server 的连接。
  • 创建一个临时表。
  • 登记在事务中的连接。
  • 会在临时表上的插入。
  • 提交分布式的事务。
  • 选择插入的值,以确保它已提交。
  • 关闭连接。
 

如何使用 DTCTester 工具

  1. 为您的 SQL Server ODBC 控制面板实用程序中通过创建 ODBC 数据源。
  2. 从命令行执行以下命令︰
    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 通过动态分配端口]
 
参考资料
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
191168信息︰ 错误"-2147168246 (8004d00a)"无法在调用对象的事务中登记
其他信息,请参阅以下 Microsoft 网站上的白皮书︰
与防火墙一起使用分布式的 COM
http://www.microsoft.com/com/wpaper/dcomfw.asp
 
原文地址:https://www.cnblogs.com/gezifeiyang/p/6184119.html