SQL Server -> Informix DB-Verbindungsserver

8

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 habe ich getan

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

Das Datenquellenobjekt des OLE DB-Anbieters "Ifxoledbc" für den Verbindungsserver "UCCX" kann nicht initialisiert werden. Der OLE DB-Anbieter "Ifxoledbc" für den Verbindungsserver "UCCX" hat die Meldung "EIX000: (-23197)" Nicht übereinstimmende Informationen zum Datenbankgebietsschema "zurückgegeben (Microsoft SQL Server, Fehler: 7303).

Das DB-Gebietsschema lautet en_US.57372

2) Verwenden von Microsoft OLE DB Provider für SQL Server, wie in diesem Blog erläutert, das 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 Meldung erneut ausgeführt. "Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Server wurde nicht gefunden oder nicht zugänglich. Ü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ültiges Verbindungszeichenfolgenattribut" zurückgegeben.

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.

scsimon
quelle
Welche Bitebene der Treiber haben Sie in Problem 1 installiert und welche Bitebene von SQL Server führen Sie aus? Diese beiden sollten gleich sein. Für # 2 können Sie den SQL Native Client nicht verwenden, um eine Verbindung zu einer Informix-Datenbank herzustellen. Dieser Blog ist irreführend, da ich vermute, dass die Autorin die in Schritt 1 ihrer Anleitung installierten Informix-Treiber verwendet.
John Eisbrener
@ JohnEisbrener 64 Bit für beide. Ich habe gesehen, wo viele Leute Probleme hatten, 32-Bit-Treiber zu installieren und zum Laufen zu bringen. Ich fand es auch faul, aber sie hat ein Bild gepostet UND den Text bei diesem Anbieter platziert. Wenn sie den Informix-Treiber gewählt hätte, wäre der Katalog abgeblendet.
Scsimon
Können Sie den kürzlich installierten Informix-Treiber unter sehen ServerName -> Server Objects -> Linked Servers -> Providers? Wenn Sie den Anbieter nicht sehen können, müssen Sie die Instanz möglicherweise neu starten. Alternativ können Sie eine ungerade Treiberinstallation verwenden, die benutzerspezifisch und nicht serverweit ist. In diesem Fall müssen Sie sie möglicherweise als denselben Benutzer installieren, der SQL ausführt.
John Eisbrener
@ JohnEisbrener Ich sehe den Treiber, wenn ich als ich selbst (ein Administrator) und als ein anderes lokales Administratorkonto verbunden bin.
Scsimon
Ich hoffe, dies ist nicht Ihr Problem, da die Problemumgehung einfach schrecklich aussieht. Ich glaube nicht, dass Ihr Verbindungsserver falsch konfiguriert ist, aber vielleicht würde die Übergabe Client_Locale=en_us.8859-1der Verbindungszeichenfolge (über ConnectionStrings.com ) funktionieren? Ich greife aber nach Strohhalmen ... Entschuldigung
John Eisbrener

Antworten:

5

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 ansässigen KMU darüber informiert, dass dies unmöglich ist. Pro Server konnte nur auf eine einzelne Informix-Instanz verwiesen werden.

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. Das richtige IBM Informix ODBC Drivermuss 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-Zeichenfolge
      • Fahrer = {IBM INFORMIX ODBC DRIVER}
      • Datenbank = $ YourDatabaseName
      • usw...

Wenn Sie eher ein manueller SQL-Typ 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.

Kojote
quelle
Ein Teil davon stammt aus dem Gedächtnis. Wenn Sie also auf Probleme stoßen, lassen Sie es mich wissen und wir können gemeinsam daran arbeiten.
Kojote