MSSQLSERVER_3988
Si applica a: SQL Server
Dettagli
Attributo | Valore |
---|---|
Nome prodotto | SQL Server |
ID evento | 3988 |
Origine evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbolico | XACT_UNSUPPORT_PARALLEL_TRAN2 |
Testo del messaggio | Non sono consentite nuove transazioni perché nella sessione sono presenti altri thread in esecuzione. |
Spiegazione
Questo errore si verifica quando si esegue una query distribuita che unisce più tabelle ospitate da istanze remote di SQL Server mentre l'impostazione della XACT_ABORT
sessione è ATTIVATA. Viene visualizzato all'utente un messaggio di errore simile al seguente:
Messaggio 3988, livello 16, stato 1, riga #
Non sono consentite nuove transazioni perché nella sessione sono presenti altri thread in esecuzione.
Causa
Esistono alcune limitazioni di progettazione nel modo in cui SQL Server gestisce le query distribuite (DQs) quando sono vere le condizioni seguenti:
- SQL Server unisce più tabelle di un'origine dati di SQL Server remota.
- La sessione che esegue la query non è integrata in una transazione distribuita.
In questa situazione un tentativo di eseguire la query può generare uno dei due errori indicati nella sezione Spiegazione.
Azione utente
Per risolvere il problema, racchiudere la query distribuita in un'istruzione BEGIN DISTRIBUTED TRANSACTION:
BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION