PDA

View Full Version : Datentransfer MSSQL auf AS/400



synus
25-03-02, 16:34
Hallo

Ich habe die AS/400 im MSSQL als Verbindungsserver (engl. "Linked Server") eingebunden.
Ein SQL-Select auf die AS funktioniert auch, aber wenn ich ein insert/update machen will und die Tabelle im AS nicht journalisiert ist, kommt folgender Fehler: "[Microsoft][ODBC SQL Server Driver][SQL Server][OLE/DB provider returned message: [IBM][Client Access Express ODBC Driver (32-bit)][DB2/400 SQL]SQL7008 - TABELLE in LIBRARY für Operation ungültig.]"
Wenn sie journaled ist, funktioniert es.

Kann mir wer sagen, ob/wie es möglich ist, update/insert zu machen, ohne die Tabelle zu journalisieren?

rmittag
25-03-02, 16:53
in der ODBC Verwaltung Commitment-Control ausschalten :

Verwaltung -> Datenquellen (ODBC)

entsprechende Datenquelle auswählen

Notebookseite "Server"

Commit-Modus : Sofortiges COMMIT (*NONE)

Gruß Rolf

synus
26-03-02, 16:36
Das hilft auch nicht, aber danke.
Journaling für die Tabelle zu aktivieren scheint die einzige Möglichkeit zu sein.
Das hilft aber auch nur für INSERT; DELETE und UPDATE werden nun mit folgendem Fehler quitiert:
[Microsoft][ODBC SQL Server Driver][SQL Server]Tabelle '"SYSTEM"."LIBRARY"."TABELLE"' von OLE DB-Provider 'MSDASQL' konnte nicht geöffnet werden. Der Provider konnte eine Position für die Zeilensuche nicht unterstützen.

Jemand eine idee?
Wir haben den ODBC Treiber C/A version 8.0 im Einsatz

Vielen Dank
[Dieser Beitrag wurde von synus am 26. März 2002 editiert.]

[Dieser Beitrag wurde von synus am 26. März 2002 editiert.]

synus
26-03-02, 16:39
.

[Dieser Beitrag wurde von synus am 26. März 2002 editiert.]

Fuerchau
27-03-02, 09:13
1. Zu Commitment-Control:

Im MSSQL dürfen die Anweisung BeginnTransaction und Commit/Rollback nicht angewandt werden, wenn keine Journalisierung aktiv ist. Die Transaction-Unterstützung für die ODBC-Quelle muss im MSSQL abgeschaltet werden.

2. zu Update/Delete

MSSQL arbeitet immer mit Schlüsseln. Sind keine Schlüssel definiert, erlaubt MSSQL nur SELECT und INSERT.
Beim Einbinden der ODBC-Tabelle müssen daher Felder als Schlüssel angegeben werden.
Achtung: Wenn der Schlüssel nicht EINDEUTIG ist lehnt MSSQL auch hier einen UPDATE / DELETE ab, wenn mehr als 1 Satz gefunden wird.

Als Alternative können sie auch einen ODBC-Direkt-Bereich verwenden (oder SQL-Paththru). Damit wird dann MSSQL (und Transaction) abgeschaltet und alles, was die AS/400 kann, kann verwendet werden.

synus
02-04-02, 15:06
Danke

<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Fuerchau:
Beim Einbinden der ODBC-Tabelle müssen daher Felder als Schlüssel angegeben werden.
Achtung: Wenn der Schlüssel nicht EINDEUTIG ist lehnt MSSQL auch hier einen UPDATE / DELETE ab, wenn mehr als 1 Satz gefunden wird.[/quote]
Wie kann ich das mit die Schlüssel beim Einbinden in den MSSQL7 bewerkstelligen?
In der AS/400 hat die Tabelle einen eindeutigen Schlüssel, der aber MSSQL anscheinend nicht übernimmt.

Oder wie kann ich einen ODBC-Direkt-Bereich definieren?


[Dieser Beitrag wurde von synus am 02. April 2002 editiert.]

synus
19-04-02, 14:09
Hallo Leute

Problem hat sich erledigt,
Client Express V5R1 hat einen BUG
Mit neuestem Service Pack klappt es

Vielen Dank
Roberto