title: BEGIN TRY/CATCH and MSDTC error
body: <p>1/ The following code snippet show me the expected error: <strong>The INSERT statement conflicted with the FOREIGN KEY constraint FK_...</strong></p>
  
  <pre><code>SET XACT_ABORT ON;
  
  BEGIN TRANSACTION
  
      INSERT INTO linkedsrv1.db1.[dbo].tbl1 ([Col1], [Col2])  
      VALUES (1200, 0)                
  
  COMMIT TRANSACTION
  </code></pre>
  
  <p>2/ But when I put this in a BEGIN TRY/CATCH, the error message is vague: <strong>Msg 1206, Level 18, State 118, Line 18
  The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.</strong></p>
  
  <pre><code>SET XACT_ABORT ON;
  
  BEGIN TRY  
      BEGIN TRANSACTION   
  
          -- Error is on this line
          INSERT INTO linkedsrv1.db1.[dbo].tbl1 ([IdWebsite], [IdProductType])  
          VALUES (1200, 0)   
  
      COMMIT TRANSACTION
  END TRY  
  BEGIN CATCH
      PRINT 'Error' -- Code not reached
  
      SELECT ERROR_NUMBER(), ERROR_MESSAGE(), ERROR_SEVERITY(), ERROR_STATE()
  
      IF XACT_STATE() != 0   
          ROLLBACK TRANSACTION
  END CATCH
  </code></pre>
  
  <p>Any idea why this happens?</p>
  
  <p><strong>Later edit:</strong></p>
  
  <ol>
  <li><p>It works in case I remove the unneeded explicit transaction. It is still not clear why I get this error when I put BEGIN/COMMIT TRAN.</p></li>
  <li><p>I get the same error in case I have multiple inserts in multiple tables situated on linked server.</p></li>
  </ol>
  
  <p>Any comment / remark is welcomed.</p>