PRB: 7008 Fehler DB2OLEDB-Provider mit DB2/400

Problembeschreibung

Wenn Sie Microsoft OLE DB Provider für DB2 verwenden (DB2OLEDB) eine INSERT-, Update- oder DELETE-Anweisung für eine Tabelle DB2/400 ausführen möglicherweise die folgende Fehlermeldung angezeigt:
OLE-DB-Provider meldete: ein SQL-Fehler aufgetreten. Lesen Sie die Dokumentation für Ihre spezielle DB2 Version eine zugeordnete systemeigene und SQL-Zustand. SQLSTATE: 55019 SQLCODE:-7008
Hinweis: Sie können auch diese Fehlermeldung wenn Sie versuchen, einfügen, aktualisieren oder Löschen von einem SQL Server-Verbindungsserver mit dem DB2OLEDB-Provider und die OPENQUERY-Syntax verwenden.


Wenn Sie versuchen, einfügen, aktualisieren oder Löschen von SQL Server-Verbindungsserver DB2OLEDB-Provider, erhalten Sie bei Verwendung der 4-teiligen Abfrage auch die folgende Fehlermeldung:

Server: Msg 7306, Ebene 16, Status 2 Zeile 1 konnte nicht geöffnet werden Tabelle "KATALOGNAME. SCEMANAME. TABLENAME' von OLE DB-Provider 'DB2OLEDB'. Unbekannte Anbieterfehler.
Wenn Sie mithilfe von DBCC TRACEON(7300)Protokollierung aktivieren, erhalten Sie folgende Fehlermeldung:

Server: Msg 7306, Ebene 16, Status 2 Zeile 1 konnte nicht geöffnet werden Tabelle "KATALOGNAME. SCEMANAME. TABLENAME' von OLE DB-Provider 'DB2OLEDB'. Unbekannte Anbieterfehler. OLE DB-Fehlertrace [nicht-Interface-Fehler: OLE DB-Provider DB2OLEDB zurückgegebenen DBPROP_STRUCTUREDSTORAGE ohne DBPROPVAL_OO_BLOB unterstützt]. OLE DB-Fehlertrace [OLE/DB-Provider 'DB2OLEDB' IOpenRowset:: OPENROWSET returned 0x80040e14: Unbekannte Anbieterfehler.].

Ursache

Dies wird unter die folgende Kombination von Umständen auftreten:

  • Die DB2/400 ist.
  • Automatisch Commit -Initialisierungseigenschaft ist auf FALSE festgelegt. Sie können die Initialisierungseigenschaften in einer UDL-Datei mit Microsoft Data-Links, die Initialisierungszeichenfolge OLE DB oder ADO-Verbindungszeichenfolge festlegen.
  • Distributed Transaction Initialisierung-Eigenschaft ist auf TRUE festgelegt. Hinweis: dies nur für Host Integration Server.
  • Das Zielobjekt zu aktualisieren ist ein / 400 physische Datei oder verschlüsselte Datei, die in einer / 400 Bibliothek (im Gegensatz zu einer Auflistung DB2/400) für die Journaling nicht aktiviert wurde.

Problemlösung

Es folgen zwei Methoden, um dieses Problem zu vermeiden:

  • Automatisch Commit auf TRUE festgelegt oder Distributed Transaction auf FALSE festgelegt. In diesem Fall sind INSERT, UPDATE und DELETE-Operationen automatisch durchgeführt, wenn ausgeführt werden. Journaling ist nicht erforderlich.
  • Journaling wie aktivieren und 400 für diese bestimmte Tabelle (physische Datei) für die INSERT, UPDATE oder DELETE.

    Gehen Sie wie folgt vor, um den Journalmodus aktivieren:
    1. Erstellen des Erfassung Empfängers (CRTJRNRCV).
    2. Erstellen der Erfassung (CRTJRN) in Schritt 1 erstellte Journal-Empfänger eingeben.
    3. Die physische Journaldatei (STRJRNPF) durch Eingabe der Buch.-Blatt und Buch.-Empfänger in den Schritten 1 und 2 starten und Zuordnen der Erfassung auf eine bestimmte Tabelle SQL (physische Datei).
Wichtig: Wenn Sie versuchen, von einem Microsoft SQL Server-Verbindungsserver einfügen möchten, müssen Sie Journaling aktivieren. SQL Server startet eine Transaktion und daher auf TRUE festlegen Automatisch Commit funktionieren nicht.

Status

Dieses Verhalten ist entwurfsbedingt.

Weitere Informationen

Weitere Informationen zur Verwendung der Befehle in diesem Artikel verwiesen finden IBM OS/400 Backup und Recovery (Dokument Nummer SC41-5304-03) und IBM OS/400 CL Reference V4R4 (Dokument Nummer SC41-5722-03).


AS / 400 und DB2 IBM-Produkte.

Die in diesem Artikel erwähnten Drittanbieterprodukte werden von Unternehmen hergestellt, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in die Leistung oder Zuverlässigkeit dieser Produkte.
Eigenschaften

Artikelnummer: 286464 – Letzte Überarbeitung: 23.01.2017 – Revision: 1

Feedback