Re: DTC Fehler
From: Helge C. Rutz (hcr.remove-this_at_update4u.de)
Date: 05/10/04
- Next message: Frank Kalis: "RE: Datenbank kopieren"
- Previous message: Martin: "Re: gespeicherte Prozedur?"
- In reply to: Reiner Höhnke: "Re: DTC Fehler"
- Messages sorted by: [ date ] [ thread ]
Date: Mon, 10 May 2004 12:18:59 +0200
Hi Reiner,
die Beschreibung Deiner Umgebung hört sich Netzwerktechnisch nicht ideal für
die gewählte Implemetierung an. Allerdings hört sich das Szenario für mich
nicht so an, als ob die das Speichern der Rechnungsdaten hier zeitkritisch
ist und in der gleichen Transaktion durchgeführt werden müsste - Du sprichst
ja von einem Archiv.
Wie wäre es, wenn Ihr in dem Trigger die DatansatzID und die Barcodenummer
in einer Importauftragstabelle abspeichert und dann zeitgesteuert - z.B.
alle 15 Minuten - einen DTS Job startet der die zugehörenden Rechnungsdaten
von der AS/400 holt?
Zum weiteren Testen:
1. Habt Ihr sichergestellt, das die AS/400 selbst alle Anforderungen für DTC
erfüllt, und RPC Zugang erlaubt ist - ich bin leider keine AS/400 Experte
und kann hierzu nichts konkretes sagen?
Welche DB setzt Ihr hier ein, DB2?
2. Lege im SQL Server einen Linked Server für die AS/400 an. Überprüfe die
Einstellungen für den Providerstring - vergleiche auch Angaben zum ODBC
Treiber von IBM. Achte dabei auch auf das ENLIST_IN_DTC.
3. Erstelle im QA Deine Query für die AS/400 und teste sie, Wenn sie soweit
funktioniert kapsel sie mit BEGIN/END TRAN und sieh was passiert.
Gruß
Helge
Zu dem
"Reiner Höhnke" <anonymous@discussions.microsoft.com> schrieb im Newsbeitrag
news:a35501c43506$d1ea84e0$a001280a@phx.gbl...
Hallo Helge,
danke für die Hilfe.
Hier die gesamte Konfiguration:
Auf dem Windows Server ist SQL Server 2000 SP3a und
DokuWare installiert. Wenn in DokuWare ein Dokument mit
Barcode im Archiv abgelegt wird, wird der Barcode im SQL
Server abgespeichert und der Trigger ausgelöst (After
insert). Der Trigger holt die entsprechenden
Rechnungsdaten für den Barcode aus der AS/400 und schreibt
diese auch in den SQL Server 2000.
Die Verbindung zur AS/400 wird über den IBM Client Access
ODBC Treiber V5R10 ausgeführt. Dazu schreibt die IBM:
"Microsoft Transaction Server (MTS) and COM+ distributed
transactions are supported by R510 and later of Client
Access Express ODBC to a R510 or later OS/400 system. The
Client Access Service Pack SI02795 or later is required.
No other version of Client Access ODBC and no version of
Client Access OLE DB (IBMDA400) supports the MTS/COM+ two-
phase commit transactions."
Im SQL Server ist dann der Microsoft OLE DB Treiber für
ODBC installiert.
Das Netzwerk ist ein Ethernet mit 100/10 MBit/s und TCP/IP.
Die AS/400 hat eine 10 MBit/s Karte.
Wir haben uns schon überlegt, ob wir anstelle des Triggers
nicht eine andere Lösung machen sollten.
Es ist uns bisher aber keine eingefallen.
Gruss
Reiner
>-----Originalnachricht-----
>Hi Reiner,
>
>MSDTC kann manchmal schon etwas nervend sein.
>Ich gehe mal davon aus, dass der MSDTC Dienst auf dem
Server läuft.
>
>Ein entscheidender Punkt ist, dass dein verwendeter ODBC
Treiber DTC
>unterstützt - er muss die Option SQL_ATT_ENLIST_IN_DTC
implementieren und
>aktiv gesetzt haben.
>
>Wenn dies nicht das Problem ist solltest Du die
Connectivity zwischen den
>Servern testen.
>Der folgende Artikel kann dabei helfen.
>http://support.microsoft.com/default.aspx?scid=kb;EN-
US;306843
>
>Wenn das alles nichts hilft solltest Du mal eine
ausführliche Beschreibung
>Deiner Konfiguration des SQL Servers, des Netzwerkes und
AS/400 inkl.
>verwendeter Treiber geben.
>
>Generell solltest Du aber auch überlegen ob Du die AS/400
Abfrage wirklich
>im Trigger machen musst, da diese Konstellation etwas
bedenklich bzgl.
>Antwortzeit ist, und erhebliche Blockierungsprobleme
bewirken könnte.
>Andernfalls solltest Du eine schnelle und zuverlässige
Netzwerkverbindung
>garantieren können.
>
>Ciao,
>Helge
>
>"Reiner Höhnke" <anonymous@discussions.microsoft.com>
schrieb im Newsbeitrag
>news:9c6401c43429$c3b6ff30$a001280a@phx.gbl...
>Hallo,
>
>ich habe einen Datenbanktrigger geschrieben, der nach
>einem insert aus einem lokalen Programm, sich über ODBC an
>eine AS/400 verbindet, und von der AS/400 Daten abholt,
>und in den SQL Server 2000 schreibt.
>
>Ich habe Windows 2000 Server SP4 und SQL Server 2000 SP3a.
>
>Wenn der Trigger ausgelöst wird, bekomme ich immer
>folgende Fehlermeldung:
>
>Server: Msg 7391, Level 16, State 1, Line 1
>The operation could not be performed because the OLE DB
>provider 'MSDASQL' was unable to begin a distributed
>transaction.
>OLE DB error trace [OLE/DB Provider 'MSDASQL'
>ITransactionJoin::JoinTransaction returned 0x8004d00a].
>
>Weiß jemand, wo der Fehler liegt, und wie ich den Fehler
>behebe.
>
>
>Gruss
>
>Reiner
>
>
>.
>
- Next message: Frank Kalis: "RE: Datenbank kopieren"
- Previous message: Martin: "Re: gespeicherte Prozedur?"
- In reply to: Reiner Höhnke: "Re: DTC Fehler"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|