Transaction counting

Hallo Leute

Folgendes Szenario:
Meine aspx application macht eine Transaction auf und versucht ein Update in der Datenbank. Nun wirft jedoch ein Trigger in der DB eine Exception und macht ein Rollback der Transaction, somit bekomme ich eine Weitere Exception wenn ich myTrans.Rollback aufrufe (myTrans ist nicht NULL zu diesem Zeitpunkt). Ich möcht nun gerne wissen wie ich überprüfen kann ob die Transation die ich in .NET gestartet habe auf der DB auch wirklich noch aktive ist um diese Situation zu verhinder (Nein ich möchte nicht ein zweites Catch machen)

hier noch ein code snipset
SqlTransaction trans = null;
try
{
mapFieldsForUpdate(dataRow);
trans = this.connextion.BeginTransaction();
this.updateCmdSubject.Transaction = trans;
this.updateCmdLocation.Transaction = trans;
int i = this.updateCmdSubject.ExecuteNonQuery();
int j = this.updateCmdLocation.ExecuteNonQuery();
if(i == 0)
{
throw new HRISystemException(Constants.EX_NO_ROW_AFFECTED_SUBJECT);
}
else if(j == 0)
{
throw new HRISystemException(Constants.EX_NO_ROW_AFFECTED_LOCATION);
}
trans.Commit();
mailNotification(dr, OPERATION_UPDATE);
}
catch(HRISystemException e)
{
trans.Rollback();
}

Hi

Ich bin mir nicht sicher, aber könnte es nicht sein, dass diese information im Event InfoMessage steht (SQLConnection/OleDBconnection Objekt)?

gruss
Giuseppe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Guiseppe

dank für den Tip, ja ist richtig, dort bekomme ich all die Informationen die ich brauche.
Aber achtung wird nur vom SqlServer geworfen wenn die Serverity 10 oder kleiner ist.

Ich hätte da noch ne andere Frage an dich. Ich hab ne Mail Klasse geschrieben die CDO verwendet. Wenn ich nun meine App auf winXP laufen lase (.Net framework, .NetSP1, .NetSP2 , VStudio installiert) so läuft alles ohne probleme.
Nun hab ich mir ne VM aufgesetzt (tut eigentlich nichts zur sache) wo ich einen Win2000 Advanced Server am laufen (standart installation) habe und zusätzlich noch .NETFramework, .NetSP1 und .NetSP2 installiert. Wenn ich jedoch meine app dort laufen lasse erhalte ich ich beim aufruf von
this.msg = new CDO.MessageClass();
folgenden fehler:
File or assembly name ADODB, or one of its dependencies, was not found.
Ich hab extra jedes File kopiert das ich im Projectordner habe. Im registry ist ein ADODB Eintrag vorhanden für Version2.7 und das File befindet sich auch in ProgramFiels/commonFiles/ado zwar eine 6 monate ältere version als die auf der XP Kiste.

Irgendwo vergesse ich eine Definition wie er das assembly findet. Hab eigentlich gedacht das es in dem File in bin/Interop.CDO.dll ist, aber dem scheint nicht so.

Besten Dank für Deine Hilfe
Gruss
Chris

Hi

Keine Ahnung was das sein konnte.
Ich würde mal die aktuellste ADO Version installieren.
Ist den cdo installiert?

gruss

Ich ging davon aus das CDO mit dem .NET framework kommt, da ich nichts explizit installiert habe auf der XP Kiste. Im weiteren sind ja die ADODB Einträge auf dem W2K forhanden.
Ich werd dem mal nachgehen…

danke trotzdem
Gruss
Chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ADO 2.7 wird vom VS.Net noch installiert, standard ist glaubich 2.5 (oder schon 2.6?) auf W2K

so long
daniel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Jungs,

Also ich hab der Problem Lösung gefunden.
ADO war auf der w2k Kiste installiert nach dem ich das Framework raufgeschmissen habe. Meine ASPXApp benötigte die CDO Library, folgich hat VS.NET Interop.CDO.dll in das Bin reinkopiert, dies ist kurz gesagt ein Wrapper um die CDO um diese in pseudosafe code laufen zu lassen. Nun braucht jedoch CDO ADODB und dies auch als Primary Interop Assembly welches aber VS.NET mir nicht in das BIN geschmissen hat.
Aber zu guter letzt hab ichs rausgefunden und mail mich jetzt voller freude zu.

Interessante links dazu
http://support.microsoft.com/default.aspx?scid=KB;EN…&
http://msdn.microsoft.com/library/default.asp?url=/l…

cheers
eldo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]