[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2010
    Beiträge
    4

    Insert into über Verbindungsserver

    Hallo zusammen,

    da dies mein erster Artikel ist möchte ich mich kurz vorstellen.

    Ich heisse HaPe bin 47 Jahre alt und seit vielen Jahre Windows Softwareentwickler.

    Seit kurzem arbeite ich in einer Firma die mit einer AS400 arbeitet:
    Version V6R1

    Ich habe über einen MS-SQL 2005 einen Verbindungsserver [BioLab] erstellt. Select Statements sind problemlos möglich.

    Die Insert Statemants erzeugen Fehlermeldungen.
    Sofortiges Commit ist eingeschaltet.
    Hier meine Versuche mit Fehlermeldungen:

    Insert into [BIO].[S06237C4].[BIOLAB].[AUFTRG] (AUFNR) values (' 1')
    Fehlermeldung:
    [IBM][System i Access ODBC-Treiber][DB2 für
    i5/OS]SQL7008 -

    AUFTRG in BIOLAB für Operation ungültig

    Declare @test varchar(5)
    Set @test = ' 1'
    INSERT INTO Openquery([BIO], 'SELECT AUFNR FROM [BIO].[S06237C4].[BIOLAB].[AUFTRG]')
    Select @test

    Fehlermeldung:
    [IBM][System i Access ODBC-Treiber][DB2 für i5/OS]SQL0104 - Token [ ungültig. Gültige Token:
    ( NEW FINAL TABLE LATERAL <IDENTIFIER>


    Ich bin für jede Hilfe dankbar

    Gruß HaPe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Zu Problem 1:
    SQL7008 kommt dann, wenn die Tabelle nicht im Journal aufgezeichnet ist.
    Du musst in der DSN-Beschreibung Commit mit *NONE definieren.

    Zu Problem 2:
    Eckige Klammern werden nur von SQL-Server oder Access unterstützt.
    SQL-Standard sind Anführungszeichen.
    Die kannst du allerdings weglassen, wenn alle Namen in Großbuchstaben angegeben werden bzw. auf der AS/400 so definiert sind (Groß/Klein spielt dann keine Rolle).

    Zu Problem 3:
    Die AS/400 akzeptiert keinen Insert auf ein Select-Statement, du musst hier tatsächlich Insert-Statements verwenden.
    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

  3. #3
    Registriert seit
    Sep 2010
    Beiträge
    4

    Insert into Verbindungsserver

    @Fuerchau
    Danke für Deine Antwort.

    zu 1.
    Commit mit *NONE ist eingetragen

    zu 2.
    Ohne Eckige Klammern funktonieren beide Statements auch nicht.

    zu 3.
    Verstehe ich so, dass nur der erste Insert Befehl funktioniert?

    Gruß HaPe

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Es ist richtig, dass nur die direkte Insert-Variante funktioniert.
    Der SQL-Server übersetzt den SQL-Befehl in die AS/400-Syntax (macht der ODBC-Treiber).

    Allerdings weiß ich nicht, wie dem SQL-Server beigebracht werden kann ohne Transaktionen zu arbeiten.

    Sofortiges Commit ist die Einstellung für den Verbindungs-Server.

    COMMIT=*NONE wird über die ODBC-Konfiguration eingestellt.
    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
    Sep 2010
    Beiträge
    4
    @Fuerchau

    Sofortiges Commit kann ich leider auf dem Verbindungsserver leider nicht finden /einstellen.

    Wenn ich ein Insert Statement absetze bekomme ich folgende Fehlermeldung:
    Insert into BIO.S06237C4.BIOLAB.AUFTRG (AUFNR) values ('1')

    Fehler:
    AUFTRG in BIOLAB für Operation ungültig.

    Wobei Biolab die Bibliothek und Auftrg die Tabelle ist.

    Muss da in der AS400 noch irgendwas frei gegeben werden?

    Gruß HaPe

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn das wieder der SQL-Fehler 7008 ist, hast du leider auf diesem Wege keine Chance.

    Bist du sicher, dass du die DSN ohne Commit definiert hast ?

    Wichtig zu wissen ist folgendes:
    Der SQL-Server übernimmt die DSN-Einstellungen in seine Verbindungsfolge.
    Prüfe mal, ob da "CMT=0;" drinn steht und korrigiere das ggf.
    Eine nachträgliche Änderung der DSN kann nur übernommen werden, wenn auch die Verknüpfung neu erstellt wird.
    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wobei es allerdings sinnvoller wäre, der AS/400 Commit beizubringen, sprich: die Tabellen ans Journal hängen. Es gibt da keinerlei Vernunftsgründe, das nicht zu tun, ganz im Gegenteil!!!

    D*B
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Allerdings weiß ich nicht, wie dem SQL-Server beigebracht werden kann ohne Transaktionen zu arbeiten.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Sep 2004
    Beiträge
    129
    Zitat Zitat von Fuerchau Beitrag anzeigen

    Allerdings weiß ich nicht, wie dem SQL-Server beigebracht werden kann ohne Transaktionen zu arbeiten.
    insert into tabelle values(1, 2, 3) with nc

    sollte gehen.
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  9. #9
    Registriert seit
    Sep 2010
    Beiträge
    4
    @dabeda

    ??? with nc

    wo hast Du denn dieses Kommando her?

    Es gibt weder einen "nc" noch einen "no commit" noch einen "nocommit" Befehl.

    Oder habe ich da etwas übersehen?

    Gruß HaPe

  10. #10
    Registriert seit
    Sep 2004
    Beiträge
    129
    Moment, du kommst von MS-SQL, das hab ich übersehen, um 7 Uhr in der Früh kann sowas vorkommen.
    with nc wirds dort nicht geben, denke das ist rein AS400.
    Sorry.

    Mfg
    Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich denke, da der SQL-Server halt immer von journalisierten Tabellen ausgeht, musst du wohl die Tabelle journalisieren und die Verbindung mit Commit=*CHG definieren.
    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. Insert Into mit Externer DS?
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 15-09-09, 11:13
  2. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 10:32
  3. nach Insert neu gen. Datensatz ermitteln
    By M.Kasper in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 25-08-06, 07:32
  4. Antworten: 2
    Letzter Beitrag: 24-02-05, 18:18
  5. geht dieser SQL-Befehl auch einfacher?
    By rebe in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-02-02, 13:13

Berechtigungen

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