Tipi di transazioni

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 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.

[!NOTA] È possibile creare più transazioni su un'unica connessione ADO .NET e assegnarle a singoli comandi.

Importante:
Quando si esegue il commit delle transazioni tramite l'API ADO .NET, è consigliabile 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 Edition. Al termine di ogni istruzione SQL, ne viene eseguito il commit o il rollback. Una connessione SQL Server Compact Edition 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 Edition 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 Edition torna alla modalità autocommit.

Errori di compilazione e di run-time

A differenza di Microsoft SQL Server, SQL Server Compact Edition non consente l'elaborazione di istruzioni in batch. SQL Server Compact Edition elabora le istruzioni una alla volta e ogni istruzione viene eseguita singolarmente. Se una particolare istruzione restituisce un errore, tale errore non influisce sullo stato di eventuali altre istruzioni incluse nel batch. Ad esempio, se SQL Server Management Studio viene utilizzato per eseguire l'insieme di query seguente in SQL Server Compact Edition, 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é le query verrebbero analizzate insieme. A causa dell'errore di sintassi, SQL Server non sarebbe in grado di creare un piano di esecuzione per l'intero 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

Concetti

Transazioni (SQL Server Compact Edition)
Controllo delle transazioni
Transazioni e connettività

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition