Transaction over linked server causing time out When I execute this query on [RemoteServer] linked server, it works just fine:

INSERT INTO [RemoteServer].[DbName].[SchemaName].[TableName] VALUES (1, 'bar');


but when puting it inside a Transaction it doesn't works anymore:

BEGIN TRANSACTION
BEGIN TRY
    INSERT INTO [RemoteServer].[DbName].[SchemaName].[TableName] VALUES (1, 'bar');
    COMMIT TRANSACTION
    PRINT 'insert done!';
END TRY
BEGIN CATCH
    PRINT 'insert faild!';
    PRINT 'Error Message: ' + ERROR_MESSAGE();
    ROLLBACK TRANSACTION
END CATCH


RPC and RPC OUT are true over linked server.

When I execute secound script on my client, after timeout shows following message:

OLE DB provider "SQLNCLI11" for linked server "RemoteServer" returned message "No transaction is active.".

(0 row(s) affected)
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.
It seems Windows Firewall blocks DTC packages. To allow it to communicate through Windows Firewall, go to Control Panel > Windows Firewall > Allowed Apps and from list of apps, check Distributed Transaction Coordinator for both Private and Public networks.

If it doesn't works for you check out these solutions:


Unable to begin a distributed transaction
No transaction is active message when accessing Linked Server