none
IBM OLE DB Provider for DB2 RRS feed

  • Frage

  • Hallo

    ich habe ein Problem mit dem IBM OLE DB Provider for DB2.

    Ich kann den Microsoft OLE DB Provider for DB2 nicht benutzen weil das Zielsystem ein MS SQL 2008 R2 Express Server wird .

    Unter diesem Server kann ich den MS Provider für DB nicht installieren, deswegen der Zugriff mit dem IBM OLE DB Provider.

    Der IBM Provider ist vorhanden sobald der DB2 Client installiert wird.

    Ich kann mit dem IBM Provider eine Verbindung unter Verbindungsserver einrichten:

    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver @server = N'IBM-Server', @srvproduct=N'IBMOLEDB', @provider=N'IBMDADB2.DB2COPY1', @datasrc=N'TEST', @location=N'xxx.xxx.xxx.xxx:50000', @provstr=N'Provider=IBMDADB2.DB2COPY1;Database=TEST;Hostname=xxx.xxx.xxx.xxx;Protocol=TCPIP;Port=50000;Uid=admin;Pwd=xxxxx', 
    GO

    Ich bekomme auch einen Eintrag ich im Mangement Studio unter Verbindungsserver mit dem ich auf die DB2 Datenbank 'TEST' zugreifen kann, es werden auch die Tabllen angezeigt. 

    Das Problem ist das unter 'Verbindungsserver->IBM-Server->Katalog->default' steht und nicht 'Verbindungsserver->IBM-Server->Katalog->TEST'

    Ich weis nicht warum der Datenbankname nicht angezeigt wird. Solage als Datenbankname 'default' angezeigt wird kann ich nicht richtig mit

    dem SELECT Statment zugreife.

    SELECT [MANDANT_HANDLE]
          ,[EDI_HANDLE]
          ,[DATENELEMENT]
          ,[FEHLERNUMMER]
          ,[FEHLERTEXT]
      FROM [IBM_Server].[TEST].[EDI]
    GO

    Dises Statement funktioniert nicht weil er TEST nicht kennt.

    Was funktioniert sind folgende Abfragen

    SELECT * FROM OPENQUERY(TEST1, 'SELECT * FROM STARNET.EDI')

    hat schon jemand den IBM OLE DB Provider erfolgreich einrerichtet ?

    Mittwoch, 27. Juni 2012 11:04

Antworten

  • Hallo

    ok, ich werde das  Openquery  verwenden, damit bekomme ich ja einen Zugriff.

    Vielen dank für die Hilfe.

    Beste Grüße

    T. Appel

    • Als Antwort markiert biedego Montag, 2. Juli 2012 13:59
    Freitag, 29. Juni 2012 08:26

Alle Antworten

  • Hallo!
    Ich verwende den Treiber nicht, aber den für DB2/400. Dort kann man folgendes mitgeben:
    @provstr=N'Default Collection=XXXXXXX;'

    Bei http://www.connectionstrings.com/ibm-db2 habe ich gesehen, dass der IBM-Treiber diese Optionen wohl nicht mitbringt!

    Bei IBM gibt es aber diese Doku: https://www-304.ibm.com/support/docview.wss?uid=swg21394344

    EXEC sp_addlinkedserver @server = N'MyLinkedServer',
    @srvproduct=N'DB2',
    @provider=N'IBMDADB2.DB2COPY1',
    @datasrc=N'TEST',
    @provstr=N'Initial_Catalog=Test'

    HTH!

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Mittwoch, 27. Juni 2012 11:52
  • Hallo

    habe meine Abfrage im provider string erweitert mit:

    <p style="color:#333333"><span style="border:0px; font-style:inherit; font-family:inherit; margin:0px; outline:0px; padding:0px; color:#a31515">Initial_Catalog=Test</span></p><p>aber ich bekomme immer noch keinen Datenbanknamen im Verbindungsserver angezeigt.</p><p></p>
    
    Donnerstag, 28. Juni 2012 10:07
  • Diese Anleitung sieht noch mal leicht anders aus. Initial Catalog ohne Unterstrich, die Screenshots zeigen aber auch immer default.

    http://www.sqlcoffee.com/Tips0013.htm

    Wäre Openquery keine Alternative für dich? Die vierteilige Syntax verwende ich auch nie, damit die Verarbeitung garantiert immer auf dem anderen Server stattfindet.

    Zur Not könntest Du Dir auch Views mit Openquery anlegen und diese dann verwenden.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    Donnerstag, 28. Juni 2012 13:43
  • Hallo

    ok, ich werde das  Openquery  verwenden, damit bekomme ich ja einen Zugriff.

    Vielen dank für die Hilfe.

    Beste Grüße

    T. Appel

    • Als Antwort markiert biedego Montag, 2. Juli 2012 13:59
    Freitag, 29. Juni 2012 08:26