Messaggio di errore quando si implementa una transazione nidificata con il provider OLE DB per SQL Server: "Impossibile avviare una transazione per il provider OLE DB"

Traduzione articoli Traduzione articoli
Identificativo articolo: 306649 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Il Provider Microsoft OLE DB per SQL Server non supporta transazioni nidificate, e viene restituito il seguente messaggio di errore:
Impossibile avviare una transazione per il provider OLE DB '% 1!'.
Se il provider è un provider di specifiche di SQL Server, Microsoft SQL Server restituisce inoltre il seguente messaggio di errore:
Server: Messaggio 7392, livello 16, 2, stato
Impossibile avviare una transazione per il provider OLE DB 'SQLOLEDB'. [Provider OLE DB ha restituito il messaggio: solo una transazione può essere attiva in questa sessione.]

Cause

Questo errore indica che un'istruzione di modifica dei dati si sta tentando con un provider OLE DB quando la connessione è in una transazione esplicita o implicita e il provider OLE DB non supporta transazioni nidificate. SQL Server richiede il supporto in modo che, a determinate condizioni di errore, è possibile terminare gli effetti dell'istruzione di modifica dei dati mentre si continua con la transazione.

Risoluzione

Per risolvere questo problema, è necessario impostare XACT_ABORT su ON prima la transazione. In questo modo SQL Server per terminare la transazione circostante, quando si verifica un errore durante l'elaborazione l'istruzione di modifica dei dati. Se SET XACT_ABORT è ON, SQL Server non richiede supporto di transazione nidificata da questo provider.

Status

Questo comportamento legato alla progettazione.

Informazioni

Procedura per riprodurre il problema

Questo esempio si utilizza un server collegato che utilizza il provider OLE DB per SQL Server, per illustrare l'effetto di XACT_ABORT.
  1. Utilizzare il provider OLE DB per SQL Server per creare un server collegato denominato Vendite che utilizza il Provider Microsoft OLE DB per SQL Server.
    USE Master
    GO
    EXEC sp_addlinkedserver 
        'Sales',
        N'SQL Server'
    GO
    					
  2. Aprire Query Analyzer ed eseguire il comando riportato di seguito.
    Begin Transaction
    Insert into Sales.Northwind.DBO.Customers(CustomerId,CompanyName) Values ('1000','Test')
    Commit Transaction
    					
    è visualizzato il messaggio di errore sopra.

    Per risolvere il problema

  3. Eseguire il comando seguente per impostare XACT_ABORT su ON:
    Set XACT_ABORT ON
    					
  4. Eseguire nuovamente l'istruzione Inserisci . Si noti che i dati inseriti nella tabella senza errori.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
177138INFORMAZIONI: Transazioni nidificate non è disponibile in ODBC/OLE DB o ADO
187289HOWTO: Implementazione di transazioni nidificate con Oracle

Proprietà

Identificativo articolo: 306649 - Ultima modifica: venerdì 9 dicembre 2005 - Revisione: 4.2
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.6 Service Pack 1
Chiavi: 
kbmt kbprb KB306649 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 306649
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com