it-swarm.com.de

SQL Server -> Informix DB-Verbindungsserver

Nach ca. 3 Tagen kann ich keinen Verbindungsserver von SQL Server 2016 zu Informix 11.5 erstellen. Ich habe dies nicht mit anderen Versionen (2008R2 usw.) versucht, da ich die Verbindung zuerst in einer Testumgebung einrichten wollte.

Was ich getan habe

1) Verwenden von IBM Informix Anweisungen mit OLE DB Provider , in denen der folgende Fehler angezeigt wird (unabhängig davon, ob ich eine DNS in der Provider-Zeichenfolge verwende):

Das Datenquellenobjekt von OLE DB-Anbieter "Ifxoledbc" für Verbindungsserver "UCCX" kann nicht initialisiert werden. OLE DB-Anbieter "Ifxoledbc" für Verbindungsserver "UCCX") Rückmeldung "EIX000: (-23197)" Nicht übereinstimmende Informationen zum Datenbankgebietsschema "(Microsoft SQL Server, Fehler: 7303)

Das DB-Gebietsschema lautet en_US.57372

2) Verwenden von Microsoft OLE DB-Anbieter für SQL Server wie in diesem Blog erläutert , der den Fehler zurückgibt:

Named Pipes Provider: Es konnte keine Verbindung zu SQL Server hergestellt werden. OLE DB-Provider SQLNCLI11 für Verbindungsserver UCCX hat die Meldung "Anmeldezeitlimit abgelaufen" zurückgegeben OLE DB-Provider SQLNCLI11 für Verbindungsserver UCCX hat eine Nachricht "Ein netzwerkbezogenes oder Beim Herstellen einer Verbindung zu SQL Server ist ein instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder ist nicht verfügbar. Überprüfen Sie, ob der Instanzname korrekt ist und ob SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. SQLNCLI11 für Verbindungsserver UCCX hat die Meldung "Ungültige Verbindungszeichenfolge" zurückgegeben Attribut"

Ich habe sehr wenig Erfahrung mit Informix, was offensichtlich sein sollte, und dies ist keine lokale Installation, sondern eine Cisco-Instanz, wie Sie wahrscheinlich aus den von mir verwendeten Blogs entnommen haben. Jeder Rat wäre dankbar.

8
scsimon

Wir hatten einen Albtraum, der etwas Ähnliches einrichtete, insbesondere mit dem Problem der Verbindung zu mehreren Informix-Umgebungen. Ich hatte mehrere Informix-Instanzen, die zu Warehousing-Zwecken mit einer einzelnen SQL Server-Instanz verknüpft werden mussten, und wurde von unserem Bewohner SME, dass dies unmöglich war; es konnte nur auf eine einzelne Informix-Instanz verwiesen werden) informiert werden Server.

Ich würde durchweg die gleichen Fehler erhalten wie Sie, und nichts, was ich online ausgraben konnte, erwies sich als hilfreich.

Letztendlich bestand die Lösung aus mehreren Teilen, von denen Sie die ersten gemacht haben:

  1. Die richtige IBM Informix ODBC Driver muss auf dem Datenbankserver installiert sein.
  2. Verwenden Sie die mit den Treibern gelieferte SetNet32-Anwendung und richten Sie die Registerkarte Serverinformationen entsprechend ein. Richten Sie außerdem einen entsprechenden System-DSN-Eintrag ein.
  3. Der Trick beim Verbindungsserver-Setup besteht darin, Folgendes zu verwenden (Elemente in Codeblöcken sind wörtlich):

    • Anbieter: Microsoft OLE DB Provider for ODBC Drivers
    • Produktname: Ifxoledbc
    • Datenquelle: $ YourSystemDSNName
    • Provider String
      • Treiber = {IBM INFORMIX ODBC DRIVER}
      • Datenbank = $ YourDatabaseName
      • usw...

Wenn Sie eher eine manuelle SQL-Person sind, siehe unten. Die Provider-Zeichenfolge wird nur zu Inline-Kommentierungszwecken in eine Variable gezogen, während weiterhin ausführbarer Code vorhanden ist. Nach Bedarf ändern:

DECLARE @provider NVARCHAR(4000);
SET @provider = N'Driver={IBM INFORMIX ODBC DRIVER};'
  + N'DATABASE= ;'  --Informix DB name
  + N'Host= ;'      --Informix Hostname or IP adddress
  + N'SERVICE= ;'   --Informix service name, ex.  ifx1_tcp1
  + N'PROTOCOL= ;'  --Informix protocol, ex.  onsoctcp
  + N'SERVER= ;'    --Informix server, ex. ifx1
  + N'DB_LOCALE=en_US.819; CLIENT_LOCALE=en_US.819;'; --Change to your locale, as needed

EXEC master.dbo.sp_addlinkedserver 
@server = N'UCCX', --Linked Server system name
@srvproduct=N'Ifxoledbc', 
@provider=N'MSDASQL', 
@datasrc=N' ', --Your System DSN Name
@provstr= @provider;

Da es sich um eine einzelne Instanz handelt, sollte es ausreichen, einfach die Werte abzugleichen, die zum Erstellen Ihres System-DSN verwendet wurden. Wenn Sie zusätzliche Verbindungsserver für andere Instanzen hinzufügen müssen, können Sie genau das oben beschriebene Format ohne zusätzliche DSN-Einträge verwenden.

Ich hoffe das hilft.

5
coyote