The operation could not be performed because OLE DB provider “SQLNCLI10” for linked server “DB_PROD_04” was unable to begin a distributed transaction

爱⌒轻易说出口 提交于 2019-12-25 11:55:09

问题


I have two servers:

SQL_UAT_01

DB_PROD_04

Both of these servers have the same database name and same tables:

SQL_UAT_01.Database_01.TestTable

DB_PROD_04.Database_01.TestTable

There is a trigger on each of these two tables.

When the trigger fires, it does a simple UPDATE on the table of the OTHER server.

Example

Trigger is fired here:

SQL_UAT_01.Database_01.Test

It does an update here:

DB_PROD_04.Database_01.Test

And vice-versa.

I'm running into an error which I have no clue how to fix.

Again, the error is this:

CallableStatementCallback; bad SQL grammar [{call spGetAndIncrementIndex(?)}]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "DB_PROD_04" was unable to begin a distributed transaction.

I have already linked the servers on both sides.

Does anyone have ANY idea how I should go about fixing this?


回答1:


The answer was to install the DT on the server. It's a windows feature. I installed it and wahllah!




回答2:


If a server runs out of local ports, you also get MSDTC issues

This is also fixed by correcting ephemeral TCP port saturation:

http://msdn.microsoft.com/en-us/library/aa560610%28v=bts.20%29.aspx



来源:https://stackoverflow.com/questions/13333832/the-operation-could-not-be-performed-because-ole-db-provider-sqlncli10-for-lin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!