MSDTC故障排除,DTCTester用法 (二)
摘自:https://support.microsoft.com/zh-cn/kb/293799#bookmark-4
————————————————————————————
概要
下载 DTCTester 工具
下列文件已可从 Microsoft 下载中心下载:下载 DTCTester 软件包。有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 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 网站上的白皮书︰