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
- Avviare il servizio Distributed Transaction Coordinator.
- Aprire Pannello di controllo → Strumenti di amministrazione → Servizi componenti.
- Nel menu di sinistra espandere Computer → Risorse del computer → Distributed Transaction Coordinator, fare clic destro su DTC locale e aprire le Proprietà.
- 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.