Torna al Blog

    Utilizzare TransactionScope C# su un server SQL remoto con MSDTC

    13 dicembre 2013

    Per operare con transazioni su database SQL Server 2005, se è presente più di una connessione aperta verso il server, è d’obbligo utilizzare il servizio di sistema MSDTC (Distributed Transaction Coordinator) su entrambe le macchine, client e server.

    Il meccanismo di promozione a transazione distribuita è descritto approfonditamente nell’articolo Avoiding unwanted escalation to distributed transactions.

    Configurazione sui PC coinvolti

    1. Avviare il servizio Distributed Transaction Coordinator.
    2. Aprire Pannello di controllo → Strumenti di amministrazione → Servizi componenti.
    3. Nel menu di sinistra espandere Computer → Risorse del computer → Distributed Transaction Coordinator, fare clic destro su DTC locale e aprire le Proprietà.
    4. Nella scheda Protezione impostare la comunicazione tra i rispettivi MSDTC:
      • spuntare Accesso DTC di rete;
      • spuntare Consenti client remoti e Consenti amministrazione remota;
      • abilitare le connessioni in ingresso e in uscita scegliendo Nessuna autenticazione richiesta, per non dover configurare anche l’autenticazione RPC;
      • lasciare il protocollo predefinito.

    Test del collegamento

    Per testare la fattibilità del collegamento sulla rete e verificare che non ci siano impedimenti come firewall, è utile installare su entrambe le macchine DTCTester.

    Il significato dei possibili errori restituiti è spiegato in Troubleshooting MSDTC issues with the DTCPing tool. Altri spunti e riflessioni si trovano su Stack Overflow.