567 messaggi dal 18 marzo 2002
Salve, ho dei problemi con il seguente codice:

Dim objDbConn As New SqlConnection(ConfigurationSettings.AppSettings("strConnEnterprise"))
objDbConn.Open()
Dim objCommand As New SqlCommand()
Dim objTransaction As SqlTransaction
objCommand.Connection = objDbConn
objTransaction = objDbConn.BeginTransaction
objCommand.Transaction = objTransaction
strSQL = "CREATE TABLE Prova (OID int IDENTITY(1, 1) PRIMARY KEY CLUSTERED, OID_tbBaseProducts int NOT NULL REFERENCES tbBaseProducts(OID))"
objCommand.CommandText = strSQL

Dim s As Integer
Try
s = objCommand.ExecuteNonQuery()
objTransaction.Commit()
Catch ex As SqlException
objTransaction.Rollback()
Finally
objDbConn.Close()
End Try


se la tabella Prova non esiste viene fatto il commit della transazione come è logico che sia; se eseguo il codice successivamente, cioè a tabella creata il roolback della transazione mi genera la seguente eccezione:
The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION

ma il begin transaction come si vede dal codice è ben presente, inoltre se dipendesse da questo non mi dovrebbe fare neanche il commit la prima volta.
Sto perdendo un sacco di tempo con questa cosa, ho provato a modificare il codice in tutti i modi ma l'errore rimane, verificatelo anche voi.
Saluti, Paolo


10 messaggi dal 01 agosto 2002
1) Molto meglio aprire la transazione all'interno del blocco Try
2) Che io ricordi i comandi DDL (CREATE, DROP, ecc.) al contrario di quelli DML (INSERT, UPDATE, DELETE, ecc.) NON possono essere eseguiti sotto transazione, o, più correttamente, si disinteressano assolutamente delle nostre transazioni.
3) In ogni caso se la tabella Prova esiste già, non la ricrea di sicuro, quindi kettifrega rollbackarla (disgustoso termine...)??

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.