[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2017
    Beiträge
    2

    Verbindungsserver auf einer MS-SQL-Datenbank zur AS400

    Hallo Zusammen,

    ich suche seit einiger Zeit im Netz eine Möglichkeit, Daten einer iSeries-Datenbank vom MS-SQL-Server (2012 Service Pack 3) mittels eines Verbindungsservers upzudaten bzw. einzufügen. Habe diverse Provider probiert, aber ein schreibender Zugriff funktioniert einfach nicht. Ein lesender Zugriff funktioniert bei allen Providern wunderbar. Ich hoffe Ihr könnt mir helfen.

    Auf dem SQL-Server ist "IBM i Access für Windows Version 7.1.0.SI57907" installiert

    Ich habe folgende Provider probiert:
    IBMDA400 (IBM DB2 for i IBMDA400 OLE DB Provider)
    IBMDASQL (IBM DB2 for i IBMDASQL OLE DB Provider)
    MSDASQL (Microsoft OLE DB Provider for ODBC Drivers)

    --> bei allen Providern ist "Allow in Process" aktiviert
    --> bei der ODBC-Verbindung ist "Sofortiges COMMIT" bzw. "COMMIT=*NONE" aktiviert

    Ein schreibender Zugriff über die gleiche ODBC-Verbindung mittels MS-ACCESS oder PHP funktioniert auch, aber nicht mittels des SQL-Servers.

    Einige Fehlermeldungen:

    Meldung 7390, Ebene 16, Status 2, Zeile 1
    Der angeforderte Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'IBMDA400' für den Verbindungsserver 'IBMDA400' die angeforderte Transaktionsschnittstelle nicht unterstützt.


    Meldung 7391, Ebene 16, Status 2, Zeile 1
    Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'IBMDASQL' für den Verbindungsserver 'IBMDASQL' keine verteilte Transaktion beginnen konnte.


    Der OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'MSDASQL' hat die Meldung '[IBM][System i Access ODBC-Treiber]Enlist bei DTC-Phase fehlgeschlagen. 2' zurückgeben.
    Meldung 7391, Ebene 16, Status 2, Zeile 1
    Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'MSDASQL' keine verteilte Transaktion beginnen konnte.


    Habt ihr eine Idee voran es liegen kann. Ich bin über jede Antwort dankbar!

    Vielen Dank im voraus!


    Gruß Bernd

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von barny68 Beitrag anzeigen
    Hallo Zusammen,

    ich suche seit einiger Zeit im Netz eine Möglichkeit, Daten einer iSeries-Datenbank vom MS-SQL-Server (2012 Service Pack 3) mittels eines Verbindungsservers upzudaten bzw. einzufügen. Habe diverse Provider probiert, aber ein schreibender Zugriff funktioniert einfach nicht. Ein lesender Zugriff funktioniert bei allen Providern wunderbar. Ich hoffe Ihr könnt mir helfen.

    Auf dem SQL-Server ist "IBM i Access für Windows Version 7.1.0.SI57907" installiert

    Ich habe folgende Provider probiert:
    IBMDA400 (IBM DB2 for i IBMDA400 OLE DB Provider)
    IBMDASQL (IBM DB2 for i IBMDASQL OLE DB Provider)
    MSDASQL (Microsoft OLE DB Provider for ODBC Drivers)

    --> bei allen Providern ist "Allow in Process" aktiviert
    --> bei der ODBC-Verbindung ist "Sofortiges COMMIT" bzw. "COMMIT=*NONE" aktiviert

    Ein schreibender Zugriff über die gleiche ODBC-Verbindung mittels MS-ACCESS oder PHP funktioniert auch, aber nicht mittels des SQL-Servers.

    Einige Fehlermeldungen:

    Meldung 7390, Ebene 16, Status 2, Zeile 1
    Der angeforderte Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'IBMDA400' für den Verbindungsserver 'IBMDA400' die angeforderte Transaktionsschnittstelle nicht unterstützt.


    Meldung 7391, Ebene 16, Status 2, Zeile 1
    Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'IBMDASQL' für den Verbindungsserver 'IBMDASQL' keine verteilte Transaktion beginnen konnte.


    Der OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'MSDASQL' hat die Meldung '[IBM][System i Access ODBC-Treiber]Enlist bei DTC-Phase fehlgeschlagen. 2' zurückgeben.
    Meldung 7391, Ebene 16, Status 2, Zeile 1
    Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'MSDASQL' keine verteilte Transaktion beginnen konnte.


    Habt ihr eine Idee voran es liegen kann. Ich bin über jede Antwort dankbar!

    Vielen Dank im voraus!


    Gruß Bernd
    ... die Fehlermeldung sagt doch, was für ein Problem besteht: Transaktionskontrolle (Commit) nicht unterstützt => da fehlt es an Journalisierung der Daten auf der AS/400 (STRJRNPF). Ob sich das Transaktionsverhalten im Verbindungsserver abschalten lässt (wovon ich entschieden abraten würde)
    entzieht sich meiner Kenntnis, da ich die Transaktionen von der AS/400 aus durchführe.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Beim Lesen ist das dem SQL-Server natürlich egal, aber beim Schreiben verlangt der SQL-Server vernünftiger weise Transaktionskontrolle. Dies lässt sich nicht abschalten.
    Voraussetzungen also:
    - Journalisierung auf der AS/400 für die betroffenen Dateien
    - Commit *CHG in der Verbindungseinstellung
    Dann klappts auch mit dem Schreiben.
    Auch wenn die Standard-Anwendung Transaktionen nicht unterstützt kann man trotzdem journalisieren und ggf. den Wechsel der Journalempfänger mit Cleanup vollständig dem System überlassen.
    Außerhalb des SQL-Servers mit eigenen Scripten/Programmen kann man Transaktionen ja selber steuern.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ggf. kannst du dies hier abschalten:
    https://technet.microsoft.com/en-us/...=sql.105).aspx
    Allerdings scheint dies nur beim Aufruf von Prozeduren zu gelten.
    Du müsstest dann also für deine Writes/Inserts/Deletes entsprechende Prozeduren auf der AS/400 schreiben und aufrufen.
    Dies ist aber schon unsicher, da ja die Daten ggf. auf der AS/400 geschrieben sind, aber der SQL-Server ggf. die Transaktion zurückdreht.
    Gerade bei verteilten Transaktionen ist Journalisierung auf der AS/400 lebenswichtig.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    May 2017
    Beiträge
    2
    Die Tabelle ist jetzt journalisiert. Der Update eines Datensatzes dauert allerdings je nach Provider bis zu 1 min, ein Insert, egal von welchem Provider, musste ich jeweils nach 10 min abbrechen.

    Habt ihr noch eine Idee?
    Vielen Dank u. Gruß
    Bernd

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ein Update dauert dann 1 Minute (mit nachfolgendem Abbruch), wenn der Datensatz durch konkurierende Updates gesperrt ist!
    D.h., dass deine Transaktionssteuerung nicht funktioniert.
    Je nach deiner Methode musst du vor dem Update eine "Start Transaction" und wenn du fertig bist, einen "Commit Transaction" durchführen. Im Fehlerfall heißt das ggf. "Rollback Transaction".
    Wenn du eine Transaktion so "hängen" lässt, sperrt das nicht nur deine Transaktionen sondern auch die der anderen Prozesse incl. der AS/400-Software.
    Zusätzlich kann es auch vorkommen, dass durch Verbindungspooling jedes mal eine neue Verbindung aufgemacht wird, weil die vorherigen Transaktion nicht abgeschlossen wurde. Somit sperrst du dich selber vor weiteren Updates.

    Ein Insert hat keine Wartezeit, hier hast du ein anderes Problem!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Antworten: 17
    Letzter Beitrag: 31-10-16, 16:39
  2. Datenbank Verbindung auf die AS400?
    By SourceCoder in forum NEWSboard Java
    Antworten: 22
    Letzter Beitrag: 10-07-14, 11:38
  3. Update AS400 Datenbank per OLEDB/ADO
    By hpheim in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 26-05-03, 14:53
  4. AS400 Datenbank
    By infomio in forum NEWSboard Windows
    Antworten: 2
    Letzter Beitrag: 16-04-03, 15:23
  5. Antworten: 1
    Letzter Beitrag: 17-10-02, 14:32

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •