Erore SQLServer2005

mercoledì 26 marzo 2008 - 16.29

elsinore Profilo | Junior Member

Ciao a tutti,

io ho un applicazione che fa delle query su un DB SQL2005..... da alcune postazioni non capisco perchè mi genere questo errore..

"the commit transaction request has no corresponding begin transaction"

siccome il codice che esegue è lo stesso.....e da altre postazioni funziona correttamente, da cosa può dipendere questo errore??

grazie!

lbenaglia Profilo | Guru

>io ho un applicazione che fa delle query su un DB SQL2005.....
>da alcune postazioni non capisco perchè mi genere questo errore..
>
>"the commit transaction request has no corresponding begin transaction"
Perché da qualche parte esegui una COMMIT TRAN senza la corrispondente BEGIN TRAN

>siccome il codice che esegue è lo stesso.....e da altre postazioni
>funziona correttamente, da cosa può dipendere questo errore??
Da quello che ho riportato sopra.

>grazie!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

ma in soldoni cosa vuol dire?

nel codice eseguo delle insert.......ma è sempre lo stesso il codice....

lbenaglia Profilo | Guru

>ma in soldoni cosa vuol dire?
>
>nel codice eseguo delle insert.......ma è sempre lo stesso il
>codice....
Eh, posta il codice che lo analiziamo...

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

per esempio una query è questa....

'INSERT INTO COST_VALIDITY (ID_OBJ,ID_DB_OBJ_TYPE,BEGIN_DATE,END_DATE,COST,COST_TYPE,DESCRIPTION) VALUES ('{66928DFC-8A47-4E6D-8769-F443731D515E}','3','03/27/2008 00:00:00','12/12/9999 23:59:59','33','0','')'

lbenaglia Profilo | Guru

>per esempio una query è questa....
>
>'INSERT INTO COST_VALIDITY (ID_OBJ,ID_DB_OBJ_TYPE,BEGIN_DATE,END_DATE,COST,COST_TYPE,DESCRIPTION)
>VALUES ('{66928DFC-8A47-4E6D-8769-F443731D515E}','3','03/27/2008
>00:00:00','12/12/9999 23:59:59','33','0','')'

Questa query NON può procurare l'errore che segnali dato che esegue una transazione implicita.
Occhio al formato delle date. Per evitare problemi di interpretazione utilizza il formato ANSI SQL 'YYYYMMDD hh:mm:ss'.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

...ok ho sbagliato la pagina in cui guardare....sorry!

l'errore slata fuori quando eseguo un'altra pagina....

ma nella pagina cosa devo cercare di preciso? mi sembra di vedere solo select o insert o update diciamo "normali"...

ti allego tutto il codice in un txt...





nel txt richiamo questo codice in altre classi.....e penso che qui esegua le transizioni sql

{**
Commits the current transaction.
}
procedure TZConnection.StartTransaction;
begin
if not FAutoCommit and (FExplicitTransactionCounter = 0) then
DatabaseError('Invalid operation in non AutoCommit mode.');

if FExplicitTransactionCounter = 0 then
AutoCommit := False;
Inc(FExplicitTransactionCounter);
end;

{**
Commits the current transaction.
}
procedure TZConnection.Commit;
var
ExplicitTran: Boolean;
begin
if FConnection = nil then
DatabaseError('Connection is not open yet.');
if FAutoCommit then
DatabaseError('Invalid operation in AutoCommit mode.');

ExplicitTran := FExplicitTransactionCounter > 0;
if FExplicitTransactionCounter < 2 then//when 0 then AutoCommit was turned off, when 1 StartTransaction was used
begin
ShowSqlHourGlass;
try
try
FConnection.Commit;
finally
FExplicitTransactionCounter := 0;
if ExplicitTran then
AutoCommit := True;
end;
finally
HideSqlHourGlass;
end;
DoCommit;
end
else
Dec(FExplicitTransactionCounter);
end;



però come ti dicevo questo codice viene eseguito sempre....non capisco perchè cone le stesse query (da pc diversi) mi faccia apparire quell'errore....

lbenaglia Profilo | Guru

>ma nella pagina cosa devo cercare di preciso? mi sembra di vedere
>solo select o insert o update diciamo "normali"...
>
>ti allego tutto il codice in un txt...

Mi viene il mal di mare a leggere quel codice
Cattura col Profiler la sessione che ottieni eseguendo la pagina, salva il file di trace ed allegalo alla tua risposta.
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

"Cattura col Profiler la sessione che ottieni eseguendo la pagina, salva il file di trace ed allegalo alla tua risposta."


non mi uccidere...ma......come si fa?

lbenaglia Profilo | Guru

>non mi uccidere...ma......come si fa?

"Using SQL Server Profiler"
http://msdn2.microsoft.com/en-us/library/ms187929.aspx

Buona lettura
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

....il problema è che l'errore avviene su un server dal quale accedo via Citrix....quindi io direttamente non ho accesso al DB server....cmq farò fare il check che mi dici a chi di dovere!

Hai visto sopra che ho postato il codice del commit e del trans?

li ci vedi errori?

lbenaglia Profilo | Guru

>Hai visto sopra che ho postato il codice del commit e del trans?
Solo ora dato che prima non c'era

>li ci vedi errori?
Non conosco quel linguaggio e sinceramente non ho il tempo di studiarlo.
Sicuramente l'errore è dovuto al fatto che la riga FConnection.Commit viene chiamata anche quando non dovrebbe.

Ora tocca a te scovare il bug...
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

elsinore Profilo | Junior Member

ok...cmq domani mi studio/guardo il trace...... grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5