約3日間試した後、SQL Server 2016からInformix 11.5へのリンクサーバーを作成できません。最初にテスト環境で接続をセットアップしたかったので、他のバージョン(2008R2など)ではこれを試していません。
私がやったこと
1)IBM Informixを使用する OLE DB Provider を使用した命令)では、次のエラーが発生します(プロバイダー文字列でDNSを使用しているかどうかに関係なく):
リンクサーバー "UCCX"のOLE DBプロバイダー "Ifxoledbc"のデータソースオブジェクトを初期化できません。OLEリンクサーバー "UCCX"のDBプロバイダー "Ifxoledbc"返されたmessazge "EIX000:(-23197)"データベースロケール情報が一致しません "(Microsoft SQL Server、エラー:7303)
DBロケールはen_US.57372です
2)Microsoftを使用するOLE SQL ServerのDBプロバイダー このブログで説明されているように これはエラーを返します:
名前付きパイププロバイダー:SQL Serverへの接続を開けませんでした。 OLEリンクサーバーUCCXのDBプロバイダーSQLNCLI11がメッセージ「ログインタイムアウトの期限が切れました」を返しましたOLEリンクサーバーUCCXのDBプロバイダーSQLNCLI11がメッセージ「ネットワーク関連またはSQL Serverへの接続の確立中にインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできません。インスタンス名が正しいかどうか、SQL Serverがリモート接続を許可するように構成されているかどうかを確認してください。リンクサーバーUCCXのSQLNCLI11がメッセージ「無効な接続文字列属性"
私は明らかなはずのInformixの経験がほとんどありません。これはローカルインストールではなく、おそらく私が使用していたブログから収集したCiscoインスタンスです。任意のアドバイスをいただければ幸いです。
特に、複数のInformix環境への接続の問題など、同様の設定が悪夢でした。ウェアハウスの目的で単一のSQL Serverインスタンスにリンクする必要のあるInformixインスタンスがいくつかあり、常駐しているSMEからこれは不可能であると通知されました。1つのInformixインスタンスのみがサーバ。
私はいつもあなたと同じエラーを受け取ります、そして私がオンラインで浚渫することができたものは何も役に立たなかったことを証明しました。
最終的に、ソリューションにはいくつかの部分があり、そのうち最初のいくつかを実行しました。
IBM Informix ODBC Driver
をデータベースサーバーにインストールする必要があります。リンクサーバーのセットアップの秘訣は、次のものを使用することです(コードブロック内の項目はリテラルです)。
Microsoft OLE DB Provider for ODBC Drivers
Ifxoledbc
{IBM INFORMIX ODBC DRIVER}
手動のSQLに詳しい人は、以下を参照してください。プロバイダーの文字列は、インラインコメントの目的でのみ変数に取り込まれますが、実行可能コードは保持されます。必要に応じて変更します。
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;
単一のインスタンスを扱っているので、システムDSNの作成に使用された値を単に一致させるだけで十分です。他のインスタンスにリンクサーバーを追加する必要がある場合は、DSNエントリを追加せずに、上記とまったく同じ形式で実行できます。
お役に立てば幸いです。