Just recently I encountered problem with SQL replication. The replication itself is from SQL Server 2000 to SQL Server 2000. I wanted to synchronize whatever update in publisher to subscriber and vice versa, also I wanted using Transaction replication instead of Merge replication. Setup for publisher and subscriber went smoothly (don't forget to choose advanced option in wizard for this type of replication).
Replication on the Local Area Network worked perfectly, no glitch whatsoever, but not when I wanted to replicate across the WAN. Replication from publisher to subscriber worked like a charm, but not the other way around. I've always got an error message like this :
Server: Msg 7391, Level 16, State 1, Line 5
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
Googling and found some article that suggested me to go check for KB 839279
I've done what the article suggested but still no luck, the error is still exist.
After doing some investigation, I realized that I have no reply on ping the host name from one machine to another, although ping the IP address always give replies. I suspect that the NetBios over TCP/IP is not enabled and to enable it is not as easy as clicking the checkbox in network properties, especially if you have no total control of the network and active directory like me.
Then what I did is opening the hosts file in %systemroot%\system32\drivers\etc\hosts, added the host name and ip address of each target machine (i.e add Publisher machine and ip address in Subscriber hosts file)... voila... now the replication is working.
I know what I did is quick and dirty solution and can also be categorized as a hack, for more elegant solution you can use WINS and enable the NetBios over TCP/IP