Benutzer mit den meisten Antworten
IBM OLE DB Provider for DB2

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',
GOIch 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]
GODises 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 ?
Antworten
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 -
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>
-
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- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 29. Juni 2012 10:05