Condividi tramite


Tipi di transazioni

Microsoft SQL Server Compact 3.5 supporta due tipi di transazioni: esplicite e con autocommit.

Transazioni esplicite

Una transazione è esplicita quando si definiscono esplicitamente sia l'inizio che la fine della transazione. Tale operazione può essere eseguita tramite istruzioni SQL o funzioni API del database.

Istruzioni SQL

Tramite SQL Server Management Studio è possibile utilizzare le istruzioni SQL seguenti per definire transazioni esplicite:

  • BEGIN TRANSACTION

    Indica il punto di inizio di una transazione esplicita per una connessione.

  • COMMIT TRANSACTION

    Termina correttamente una transazione se non si verificano errori. Tutti i dati modificati dalla transazione diventano una parte permanente del database. Le risorse occupate dalla transazione vengono liberate.

  • ROLLBACK TRANSACTION

    Cancella una transazione in cui si sono verificati errori. Tutti i dati modificati dalla transazione vengono riportati allo stato precedente l'inizio della transazione. Le risorse occupate dalla transazione vengono liberate.

ADO.NET e OLE DB

È inoltre possibile utilizzare le transazioni esplicite in ADO.NET e OLE DB.

In ADO.NET, utilizzare il metodo BeginTransaction su un oggetto SqlCeConnection per avviare una transazione esplicita. Per terminare la transazione, chiamare i metodi Commit o Rollback dell'oggetto SqlCeTransaction.

In OLE DB chiamare il metodo ITransactionLocal::StartTransaction per iniziare una transazione. Chiamare il metodo ITransaction::Commit o ITransaction::Abort, con fRetaining impostato su FALSE per terminare la transazione senza avviarne automaticamente un'altra. Si noti che è possibile creare più transazioni su un'unica connessione ADO.NET e assegnarle singoli comandi.

Importante

Quando si esegue il commit delle transazioni tramite l'API ADO.NET, chiudere tutti i lettori di dati aperti e i set di risultati inclusi in tale transazione.

Transazioni con autocommit

La modalità autocommit è la modalità di gestione delle transazioni predefinita di SQL Server Compact 3.5. Al termine di ogni istruzione SQL, ne viene eseguito il commit o il rollback. Una connessione SQL Server Compact 3.5 utilizza la modalità autocommit predefinita se non sono state impostate transazioni esplicite. La modalità autocommit è la modalità predefinita anche per ADO.NET e OLE DB.

Una connessione SQL Server Compact 3.5 utilizza la modalità autocommit fino a quando una istruzione BEGIN TRANSACTION non avvia una transazione esplicita. Quando viene eseguito il commit o il rollback della transazione esplicita, SQL Server Compact 3.5 torna alla modalità autocommit.

Errori di compilazione e di runtime

A differenza di SQL Server, SQL Server Compact 3.5 non consente l'elaborazione di istruzioni in batch. SQL Server Compact 3.5 elabora le istruzioni una alla volta ed esegue ogni istruzione singolarmente. Se una particolare istruzione restituisce un errore, tale errore non influisce sulle altre istruzioni incluse nel batch. Ad esempio, se SQL Server Management Studio viene utilizzato per eseguire il set di query seguente in SQL Server Compact 3.5, le prime due query verranno eseguite correttamente, ma non sarà possibile eseguire la terza a causa dell'errore di sintassi.

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

Nota

Se queste query fossero inviate come batch a SQL Server, non sarebbe possibile eseguirle, poiché verrebbero analizzate insieme. L'errore di sintassi impedisce a SQL Server di costruire un piano di esecuzione per il batch.

Le transazioni di livello superiore in cui è in corso un'operazione non consentono di eseguire il rollback o il commit della transazione.

Vedere anche

Altre risorse

Transazioni (SQL Server Compact)

Controllo delle transazioni

Transazioni e connettività