Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Howard
Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

ja iss mir schon klar das ditt schließen sinnvoll ist!!!!

Es geht nur darum: aktuell klemmt sich jede NEU connection an den DTC was ja bei deiner Idee ebenfalls passieren würden WENN ja wenn die "normalen" Transactions ebend nicht genau so reagieren wie nen TransCope. Genau das war dann auch die Frage ob die halt anders reagieren????

Howard

Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

Danke für deine ausführliche Antwort und die Idee mit dem DBHelper. In deinem Dispose wird allerdings auch die connection geschlossen. Bedeutet es wenn ich DBTransaction benutze wird auf jedenfall NICHT der DTC eingeschaltet?? Also der DTC reagiert nur auf TransactionScope??

Zum TransactionScope: die Studio Hilfe meint man solle auf jedenfall besser TransactionScope benutzen und wenn ich Golon in seinem Artikel ("Transactions.Erklärt()" 04/08 dotnetpro) richtig verstanden hab ist er auch der gleichen Meinung. wo ist der überhaupt? Lässt sich hier gar nicht mehr blicken?? Issa sauer auf mich oder wie


Howard

Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

okay also mit kurz vor Wahnsinnig werden hab ich nun endlich meinen "großen" Fehler entdeckt


	using(TransactionScope ts = TransactionBegin())
	{
		using (DbConnection connection = OpenConnection())
		{
			AbfrageAusfuehren(....,connection);
		}
		TransactionCommit(ts);//<-diese Zeile hatte ich doch glatt vergessen
	}

Okay passiert. Und ich dachte die ganze Zeit das sich nachfolgende Functions nicht in die Transaction reinhängen.

eine Frage entsteht nun aber doch noch am Ende:
@Golo: Ich hoffe das passt noch immer zum Thema (ich meine JA aber kann mich auch irren) ?(

Ich habe deine Idee mit dem benutzen EINER Connection während eine zusammenhängenden Aktion umgesetzt. ABER wenn es mehrere Functions gibt wie diese hier:


	using (DbConnection connection = OpenConnection())
	{
		....
	}

...dann wird nach der ersten Function die "Main"Connection geschlossen.
Was ja nicht weiter schlimm ist ich kann sie ja auch wieder auf machen
ABER ab dem 2. Öffnen (womit wir wieder beim Thema wären :D) hängt sich die ganze Sache in den DTC. Genau DAS würde ich aber gern verhindern. Da ich dann wieder auf allen Clients die local Firewall Einstellungen anpassen muss.

Ich dachte ich komm über die beiden Ereignisse "Disposed" und "StateChange" irgendwie da dran um das Closen zu verhindern.
Auch nach einem erneuten Open() ein


.EnlistTransaction(System.Transactions.Transaction.Current);
zu machen hält das Prog nicht davon ab sich in den DTC zu hängen.
Irgendeine Idee wie ich das sonnst noch machen kann?

Howard

Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

ich hab tatsache sowas wie ne "Hilfsfunktion" die mir ein connectionObjekt zurückliefert. Dann hab ich da noch ne "Hilfsfunktion" dir mir nen TransActionScope liefert. beides zunächst unabhängig voneinander und ich schreibe dann (so hatte ich es verstanden)
sowas hier:


   try
   {
	using(TransactionScope ts = TransactionBegin())
	{
		using (DbConnection connection = OpenConnection())
		{
			AbfrageAusfuehren(.....,connection);
                 ........

Okay wenn ich dich nun richtige verstanden hab kann man auch die gleiche Connection zurückliefern solange man "noch in der gleichen Aktion" ist. Das wäre "noch im limit" ja?

also ich mache "nur" Datenbanktransaktionen. Was meinst du mit std TransActions ????

Howard

Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

Okay also ich hab gestern dann den gaaaaanzen Tag damit zugebracht das ganze irgendwie ans laufen zu bekommen. Unter Vista hab ichs dann irgendwie hinbekommen mit RegistryEinträgen auf dem Server, Firewalleinstellungen und was weiß ich noch alles....
Aber ich denke ich brauch da noch mal ne grundsätzliche Erklärung zu dem ganzen Wahnsinn....
Also ich hab das so verstanden:

Der DTC(wenn er mal funktioniert dann) kümmert sich genau darum, mein Open (und sicher weitere Dinge)welches nicht explizit (durch using) von einer Transaction umschlossen wird, irgendwie doch verarbeiten zu können.
Ich kann andererseits aber auch ohne diese ganze DTC Nummer auskommen wenn ich mich selber um jedes einzelne Open kümmere und das entweder mit ner Transaction umschließe oder irgendwas wie EnlistTransaction(...) mache .....

Hab ich das Grundsätzlich korrekt auf dem Schirm ?(

Howard

Thema: [gelöst] 2. Open innerhalb eines TransactionsScope geht schief....
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL Server2005>

(Okay also mach ich mal nen neuen Thread auf..... 8) )

Ich bekomme folgende Fehlermeldungen bei nachfolgendem Code obwohl der DTC an und auf Netzwerkzugriff eingestellt ist:

1. "Der Netzwerkzugriff für den Manager für verteilte Transaktionen (MSDTC) wurde deaktiviert. Aktivieren Sie DTC für den Netzwerkzugriff in der Sicherheitskonfiguration für MSDTC, indem Sie das Verwaltungstool Komponentendienste verwenden."
System.Transactions.TransactionManagerCommunicationException

2. "Der Transaktions-Manager hat die Unterstützung für Remote-/Netzwerktransaktionen deaktiviert. (Ausnahme von HRESULT: 0x8004D024)"
System.Runtime.InteropServices.COMException


public void Main()
{
    MessageBox LeseAusDB();
    LöscheDaten();
}

public String LeseAusDB()
{
    using(DbConnection con = new DbConnection(....))
    {
        //lese mal Daten aus der DB
        ....
    }

    return Daten;
}

public void LöscheDaten()
{
    using(TransactionScope ts = new TransactionScope(....))
    {
        using(DbConnection con = new DbConnection(....))
        {
            Daten = LeseAusDB(); <-- DER GEHT SCHIEF wegen der neuen Connection
            //lösche mal alle Daten die gelesen wurden
            ....
        }

    }
}


Ich muss also die lesen Funktion einmal zur Anzeige benutzen und anderes Mal fürs Löschen (absulut vereinfacht dargestellt)
Problem ist das in der LeseAusDB() Funktion, wenn sie innerhalb der Transaction läuft, der con.Open() mit oben genannten Exceptions schief geht. Wenn ich da auch noch ne Transaction rumbaue dann gehts natürlich aber das kann doch nich der Sinn sein das ich auch noch allen Lesen-Functions eine Transaction verpassen muß....ODER??? geschockt

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

Mensch Leute warum denn immer so verklemmt .... X( das Leben an sich iss doch schon nicht zum lachen.....menno

zu "1.2 Nur ein Thema pro Thread"
Ich denke schon das diese Thema hier einfach weiter geht denn der Fehler war vorher einfach schon der gleiche. Wenn Gewünscht kann ich aber auch gern nen neues Thema auf machen....

zu 5. Problem genau beschreiben, inkl. genauer Fehlermeldung
hier die Fehlermeldung:

1. "Der Netzwerkzugriff für den Manager für verteilte Transaktionen (MSDTC) wurde deaktiviert. Aktivieren Sie DTC für den Netzwerkzugriff in der Sicherheitskonfiguration für MSDTC, indem Sie das Verwaltungstool Komponentendienste verwenden."
System.Transactions.TransactionManagerCommunicationException

2. "Der Transaktions-Manager hat die Unterstützung für Remote-/Netzwerktransaktionen deaktiviert. (Ausnahme von HRESULT: 0x8004D024)"
System.Runtime.InteropServices.COMException


Ich habs nochmal kontrolliert der DTC ist an und auf Netzwerkzugriff eingestellt!!!

Howard

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

so Mädels,

ich bin ja lernfähig und bin gerade am alles Umbaun (wasn Wahnsinn)
Nu gibbet aber nen neues Prob:
Mein Prog hat (sehr sehr vereinfacht) folgenden Ablauf:


public void Main()
{
	MessageBox LeseAusDB();
	LöscheDaten();
}

public String LeseAusDB()
{
	using(DbConnection con = new DbConnection(....))
	{
		//lese mal Daten aus der DB
		....
	}
	
	return Daten;
}

public void LöscheDaten()
{
	using(TransactionScope ts = new TransactionScope(....))
	{
		using(DbConnection con = new DbConnection(....))
		{
			Daten = LeseAusDB(); <-- DER GEHT SCHIEF wegen der neuen Connection
			//lösche mal alle Daten die gelesen wurden
			....
		}
		
	}
}

Ich muss also die lesen Funktion einmal zur Anzeige benutzen und anderes Mal fürs Löschen (wie gesagt absulut vereinfacht dargestellt)
Problem ist das in der LeseAusDB() Funktion, wenn sie innerhalb der Transaction läuft, der con.Open() schief geht. Wenn ich da auch noch ne Transaction rumbaue dann gehts natürlich aber das kann doch nich der Sinn sein das ich auch noch allen Lesen-Functions eine Transaction verpassen muß....ODER??? 8o

Howard

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

das iss gut imma schön Positiv Denken...das bringt weita....

nunja ich hab schon ma die Ärmel hochgekrämpelt...warte nun nur noch das mein Chef mich vollschreit wenn ichs im erzähle =)

howard

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

TOLL, ich glaub dir ja (und den ganzen Threads die ich nun gerade durchgelesen hab)
Aber weiste was du mir da für arbeit aufgehalst hast?? ALLDA ich werd irre....
Aber gut. wie sagte schon ein weiser Mann: "Erst kommt richtig, dann kommt schnell"

Howard

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

okay ich versuchs mal etwas mehr zu spezifizieren....



////////////////////////////////////////////
//-----MAINKLASSE--------------------------
////////////////////////////////////////////

public Constructor() //der MAINKLASSE
{
	HilfsKLASSE.OpenConnection();
	FunktionNeu1();
}

void FunktionALT2()
{
	HilfsKLASSE.AbfrageAusfuehren();
	
	FunktionALT2();
}

void FunktionALT2()
{
	HilfsKLASSE.AbfrageAusfuehren();// <- Hier gehts schief!!!!!
}

//------NEUE FUNKTIONEN-------------------------------------------------
void FunktionNeu1()
{
	TransactionScope ts;
	ts = HilfsKLASSE.TransactionBegin();

	FunktionALT1();

	FunktionNeu2();
	......
	HilfsKLASSE.TransactionCommit(ts);
}

void FunktionNeu2()
{
	TransactionScope ts;
	ts = HilfsKLASSE.TransactionBegin();
    .....
	HilfsKLASSE.TransactionCommit(ts);
}

////////////////////////////////////////////////////////////////////
//------HilfsKLASSE-------------------------------------------------
////////////////////////////////////////////////////////////////////
private TransactionScope rootTransactionScope = null;
private DbConnection	 connection;

public void OpenConnection()
{
	connection.open();
	....
}

public TransactionScope TransactionBegin()
{	
	TransactionOptions	tsOptions	= new TransactionOptions();			
	
	tsOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
	tsOptions.Timeout		 = scopeTimeout;						
	rootTransactionScope	 = new TransactionScope(TransactionScopeOption.RequiresNew,tsOptions );
	
	return rootTransactionScope;
}

public void TransactionCommit(TransactionScope ts)
{
	ts.Complete();
	ts.Dispose();
	....
}

public void AbfrageAusfuehren(....)
{
	DbCommand 		cmd = .....CreateCommand();
	DbConnection	transConnection;
	
	if (RootTransactionScope != null)
	{
		transConnection	= .....CreateConnection();		
		transConnection.Open();// <- Hier gehts schief!!!!!
		cmd.Connection = transConnection;		
	}
	else
	{
		cmd.Connection = this.connection;
	}						

	doSQLStuff....
}

Das Problem sind die connections die ja erst NACH dem TransactionScope geöffnet werden dürfen.
Also merk ich mir mit HilfsKLASSE.RootTransactionScope das eine TRansaction offen ist. Aber genau das führt zum Problem mit dem DTC.
Nächste Idee ist: bei HilfsKLASSE.TransactionBegin() auch noch die connection mit zurückgeben zu lassen (die dann DORT schon gleich geöffnet wird) damit ich die richtige habe aber eventuell gehts ja irgendwie einfacher. sowas wie EnlistTransaction(...) oder so.
Ich geb zu so ganz seh ich da noch nicht durch bei den ganzen Möglichkeiten die ma dort hat X(

Howard

P.S.: ich hoffe man hat's verstanden....

Thema: TransactionScope OHNE using. HowTo??
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <MSSQL2005>

Okay Ladys ich hoffe mir kann einer helfen:

Wo auch immer ich Beispiele finde zu TransactionScope geht es immer über
using (TransactionScope ts = new TransactionScope())......
Nun hab ich aber schon (gefühlte) 1000 Funktionen in die möchte ich NICHT überall diese using Sache nachträglich einbaun.
Diese (gefühlten) 1Mio. Funktionen benutzen bisher EINE gemeinsame Connection die zu Programmstart geöffnet und am Ende wieder geschlossen wird.
Nun muss ich mehrere Funktionen bauen die Transactions benutzen sollen und auch einige der vorhandenen aufrufen sollen. Ist der Plan da besser nicht TransactionScope sondern System.Transaction zu benutzen oder was wäre hier der richtige Weg??


Howard

P.S.: ich hoffe man hat mich verstanden 8o

Thema: Ist Silverlight das richtige für mich??
Am im Forum: GUI: WPF und XAML

Okay ich werde jetzt keine Diskussion über Slang ("proggen") anfangen...Aber gibt es dennoch jemanden der mit VisualWebGUI schon Erfahrungen hat??

Howard

Thema: Ist Silverlight das richtige für mich??
Am im Forum: GUI: WPF und XAML

Na DAS iss ja mal nen Tip. Hört sich ja richtig gut an. Ich werd das mal Austesten einige Probleme scheints ja noch zu geben. Hast du damit schon geproggt??

Howard

Thema: Ist Silverlight das richtige für mich??
Am im Forum: GUI: WPF und XAML

Hallo Leute,

wir entwickeln gerade eine Anwendung mit ASP.net (es ist unsere erste in ASP) und stellen immer wieder fest wie schwer es ist einfache Anforderungen an die GUI in ASP umzusetzen. In Winforms ist da alles irgendwie nicht so schwierig.

Nun die Fragen:
- ich hab von Silverlight noch nich soviel gelesen nur das es gaaanz toll sein soll usw. Ist es denn wirklich einfacher mit, sagen wir mal "normalen" Controls (ListView, Combos usw.) umzugehen oder ist das auch genauso (oder nur anders) grausam wie in ASP??

- Kann ich damit "einfacher" eine Anwendung im "Windows-Style" erzeugen oder doch eher nicht?

- kann ich sinnvoll mit VS2005 entwickeln oder brauch ich dringend VS2008??


Howard

Thema: [erledigt] .exe erstellen unter Vista..neuerdings Adminberechtigung beim Starten????
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

uups ich main natürlich 2005

Thema: [erledigt] .exe erstellen unter Vista..neuerdings Adminberechtigung beim Starten????
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

so Leudde Dank Master DonMaxo (ich hab übrigens die VS2006 Prof. Edition) haben wir das Problem gelöst:

- man erzeuge eine Manifest Datei (ich hab mal eine angehängt)
- packe diese in sein Project
- schreiben ins postBuild folgende Zeile:

set path=%25path%25;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
mt.exe -manifest "$(ProjectDir)$(TargetName).exe.manifest" -outputresource:"$(TargetDir)$(TargetName).exe;#1"

...und schon klappts auch mit dem Admin

ODER Plan B: Exe umbenennen auf obdät.exe

Thema: [erledigt] .exe erstellen unter Vista..neuerdings Adminberechtigung beim Starten????
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

@BerndFfm: also wenn ich die Datei umbenenne dann kommt die Abfrage nach Adminkonto nicht... wofür auch immer wir das nun Missbrauchen könn :-)

@DonMaxo: Hey Meistar igg find dett nich... bei mir iss nix mit manifestDatei...irgendwie...hmm (siehe Shot)

@GarlandGreene: absolut Recht geb... iss der Hamma


Howard

UBdate: Ich hab die EXE nun übrigens "Ubdate.exe" genannt...das geht auch

Thema: [erledigt] .exe erstellen unter Vista..neuerdings Adminberechtigung beim Starten????
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

danke Leute für die rege (an)Teilnahme.

1. ich habe Tatsache eine Programm was nunmal KEINE Adminrechte braucht da es ein Modul eines großen Programms ist welches nur Dateien von A nach B kopiert...wenn welche da sind. Natürlich wollte ich das ganze "Update..." nennen aber natürlich kann ich mir auch nen anderen Namen einfallen lassen.

2. zu der Geschichte mit der "Manifestdatei": DonMaxo was genau soll ich da eintragen damit er nicht mehr meckert??

Howard

Thema: [erledigt] .exe erstellen unter Vista..neuerdings Adminberechtigung beim Starten????
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wenn ich ein Windows-Projekt erstelle und in dem Namen irgendwo das Wort "Update" vorkommt kann diese exe nur noch mit Administratorberechtigung gestartet werden.
Was issn das fürn Sch***??? kann man das irgendwo abstellen :-)

Howard

Thema: TRansactionsproblem
Am im Forum: Datentechnologien

also wir benutzen DbProviderFactories da wirds ja ähnliches geben oder?

Howard

Thema: TRansactionsproblem
Am im Forum: Datentechnologien

Okay Ladys and Gentleman: vielen herzlichen für die Infos. Hört sich nach viel Arbeit an für uns jetzt aber okay das haben wir nu davon

Howard

Thema: TRansactionsproblem
Am im Forum: Datentechnologien

Hey thx für die schnelle Antwort

Also das mit dem dem Lockingverfahren ist ja noch ne ganz andere Nummer. Hier ging es zunächst einfach um diese Idee mit der "RiesenTransaction" um sich die doch eher aufwendige Logic zu sparen. Ich hab irgendwie sowas geahnt mit der "Dummen Idee" als ich mir deinen dnp-Artikel durchgelesen habe.

Okay auch wenn hier nun alles mit den Händen über dem Kopf zusammenschlägt ABER: dumme Fragen gibt es nicht

Sach ma kurz WARUM es ne blöde Idee ist ?(

Okay irgendwie ist die DB dann die ganze Zeit geblockt. Aber da dachten wir würden wir halt solange die "alten" Daten zu lesen bekommen......

Howard

Thema: TRansactionsproblem
Am im Forum: Datentechnologien

Hallo Golo,

ich misch mich mal in die Diskussion mit ein. Ich bin ein Kollega von tommispilot und wir bauen an dem selben Problem. Bevor das ganze hier in eine total falsche Richtung läuft erst mal folgende Frage:
Wir haben ein Programm in dem auf einem Dialog viele viele Daten geändert werden können. Wir haben mehrere TabPages und SubDialoge in den Daten geändert werden können. Stell dir eine Kontaktverwaltung vor, mit unendlich vielen Zusatzdaten. Am Ende kann der Benutzer mit OK oder ABBRECHEN im Hauptdialog entscheiden ob er diese Daten in die DB schreiben will oder nicht.
Soweit das Szenario.
Nun dachten wir uns beim Öffnen des Dialog machen wir "BeginTransaction" mit diesem TransactionScope, dann kann der Benutzer Änderungen machen, die wir sofort in die DB schreiben, und wenn er am Ende ABBRECHEN drückt werden alle Änderungen durch ROLLBACK zurückgenommen, oder aber bei OK "Commited".

Kann oder sollte man für sowas überhaupt TransactionScope "missbrauchen" oder ist da eher interne Logic gefragt? Wäre so schön einfach

Howard