Condividi tramite


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