The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server was unable to begin a distributed transaction -


i'm trying run distributed transaction machine (sql server 2012) client server (sql server 2008).

i'm trying run:

begin distributed transaction select * [172.01.01.01].master.dbo.sysprocesses commit transaction 

and get:

ole db provider "sqlncli11" linked server "172.01.01.01" returned message "no transaction active.". msg 7391, level 16, state 2, line 2 operation not performed because ole db provider "sqlncli11" linked server "172.01.01.01" unable begin distributed transaction. 

i can run select server data coming back, @ least know servers can see each other, , linked server exists , operating

now, there multiple posts on web this, can't work. have tried far: 1. set dtc properties following (on both server) enter image description here

  1. restarted distributed transaction coordinator (msdtc) control panel -> services (on both servers).

  2. uninstalled , installed dtc (on both servers).

  3. restarted remote server.

  4. turned off firewall on both servers.

  5. enabled sp_configure 'ad hoc distributed queries', 1 (on both servers).

  6. i ran dtcping , pinged successful.

  7. linked server properties changed following: enter image description here

what else there try?

update: running transaction server 172.01.01.01 works. therefore issue not on destination server, on machine source.

if after configuring ms distributed transaction coordinator (msdtc) on 2 sql server's according op's original post, still "no transaction active", should check each host reachable via ip (assuming that's you've used) registered in linked server.

for example; on recent setup, 2 sql servers reachable through network in 192.168.200.x range (same subnet), each server indirectly connected through ip in 10.x.x.x range. on 1 sql server, dns server used kept resolving target sql server it's 10.x.x.x ip (which firewalled) though linked server entry used ip in 192.168.200.x of target server.

it appears msdtc uses hostname of server, while sql server connects on linked connection using ip or hostname defined in linked server entry, leading confusing behaviour of apparent connectivity when checking target linked server within sql management studio, inability execute remote procedures on target.

the solution add entries in host file's (%windir%\system32\drivers\etc\hosts) explicitly force each sql server resolve other ip address on 192.168.200.x network.

on host 1 (ip 192.168.200.15):

# target server 192.168.200.20    targetserverhostname.and.any.domain.suffix  targetserverhostname 

on host 2 (ip 192.168.200.20)

# source server 192.168.200.15    sourceserverhostname.and.any.domain.suffix sourceserverhostname 

don't forget ensure msdtc has been configured according op's screenshot above allowing network access , (if required) no authentication.


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -