WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Transaktion über mehrere Datenbanken (http://www.wcm.at/forum/showthread.php?t=210373)

Biri 19.02.2007 15:18

Transaktion über mehrere Datenbanken
 
hi,

ich hab da eine interessante frage an euch. :)

Und zwar arbeite ich an einem System, welches DB Operationen mit einem OR Mapper ausführt (Komponente 1 - K1) und hier auch Transaktionen macht. Weiters wird über eine andere Komponente ebenfalls auf eine Datenbank - die ev. ganz wo anders läuft - zugegriffen. (Komponente 2 - K2)

Manche Funktionen einer zussammengehörigen Operation greifen auf K1 und K2 zu.

Beispiel:

Beginne Transaktion in K1
Schreibe ein paar Daten in K1
Beginne Transaktion in K2
Schreibe ein paar Daten in K2
Commit Transaktion K2
(versuche) Commit Transaktion K1
=> FEHLER
Rollback Transaktion K1

Und nun gibts ein Problem, die Transaktion in K2 wurde commited, die in K1 rückgängig gemacht.

Was ich bräuchte wäre so eine Art "übergeordnete Transaktion". Wie implementiert man so etwas bzw. bietet Sql Server 2005 Möglichkeiten in diese Richtung?

thx
hannes

delphirocks 19.02.2007 17:31

Ich hab's auch noch nie ausprobiert, aber damit sollte es funktionieren.

Biri 19.02.2007 17:48

Danke!
scheint genau das zu sein, was ich gesucht habe. ;)
Ich werd's in Kürze ausprobieren.

fg
hannes

Biri 20.02.2007 10:42

hi,

so - ich habs probiert und es hat sogar funktioniert! (reimt sich)

für alle anderen, die das auch mal brauchen:
Wenn man z.B. eine Transaktion über 2 DB's macht, die am selben PC laufen, ist nicht viel weiter zu tun - der MS-DTC Dienst muss jedoch laufen. (Kann, wenn installiert mit dem SQL Server Service Manager gestartet werden)

Wenn die Datenbanken auf 2 Rechnern laufen, muss für den DTC Dienst der Netzwerkzugriff eingerichtet werden und ggf. noch eine Firewall konfiguriert werden, sodass es funktioniert.
siehe auch: http://technet2.microsoft.com/Window....mspx?mfr=true

fg
hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag