2016-03-01 21 views
5

Sono un principiante con .net. Ho riscontrato un problema con il seguente errorecosa è Enlist = false significa nella stringa di connessione per sql server?

"Impossibile eseguire l'operazione di transazione perché ci sono richieste in sospeso su questa transazione.".

ho letto da qualche parte nel blog. Ho aggiunto la mia stringa di connessione con enlist=true e il problema è stato risolto.

Nota: sto aggiornando il mio DB da SQL Server 2005 a SQL Server 2008R2.

Si prega di aiutare a capire l'importanza di utilizzare la lista.

risposta

7

Arruolare è utente per Distributed Transaction

L'oggetto di connessione arruolare automaticamente in una transazione distribuita esistente se esso determina che una transazione è attiva. L'arruolamento automatico delle transazioni si verifica quando la connessione viene aperta o recuperata dal pool di connessioni. È possibile disabilitare l'inserimento automatico nelle transazioni esistenti specificando Enlist=false come parametro di connessione per un servizio SqlConnection o OLE DB = -7 come parametro di stringa di connessione per un OleDbConnection.

Nota Il collegamento deve essere open prima di chiamare EnlistDistributedTransaction.

Ecco un esempio per voi con Enlist=False;

2

Il MSDN dice:

La proprietà ConnectionString supporta una parola chiave, Arruolati, che indica se System.Data.SqlClient rileverà transazionali contesti e inserire automaticamente la connessione in una transazione distribuita . Se Enlist = true, la connessione viene automaticamente aggiunta a nel contesto corrente della transazione del thread di apertura. Se Enlist = false, , la connessione SqlClient non interagisce con una transazione distribuita . Il valore predefinito per Enlist è true. Se l'Enlist non è specificato nella stringa di connessione, la connessione è automaticamente inserita in una transazione distribuita se ne viene rilevata una quando viene aperta la connessione .

Problemi correlati