Microsoft SQL Server 2014 Enterprise Editionを使用しています。サーバーを再起動するか、MSSQLSERVER
サービスを停止する必要があるリンクサーバーで問題が発生します。サーバーが再度実行されている場合、(DB2への)リンクサーバーは正しく機能せず、SQL Serverは次のエラーを表示します。
メッセージ7302、レベル16、状態1、行10
リンクサーバー "Airspe"のOLE DBプロバイダー "DB2OLEDB"のインスタンスを作成できません。
サーバーを数回再起動した後にのみ、リンクサーバーが機能し始めます。
これは、リンクサーバーの1つを作成するスクリプトです。
EXEC master.dbo.sp_addlinkedserver
@server = N'AIRS',
@srvproduct=N'Microsoft OLE DB Provider for DB2',
@provider=N'DB2OLEDB',
@datasrc=N'###.###.###.##',@provstr=N'Provider=DB2OLEDB;
Data Source=#####;Persist Security Info=True;Password=**********;
User ID=######;Initial Catalog=######;
Network Address=###.###.###;Package Collection=AICOLDP;DBMS Platform=DB2/AS400',
@catalog=N'#####'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'AIRS',@useself=N'False',@locallogin=NULL,@rmtuser=N'#####',@rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'remote proc transaction promotion', @optvalue=N'true'
DB2リンク用に行われた構成に何かが欠けていると思います。
接続文字列は次のようになります。
Provider=DB2OLEDB; User ID=db2user; Password=mypassword; Initial Catalog=mydatabase;
Network Transport Library=TCP; Host CCSID=37;PC Code Page=1208;
Network Address=111.111.111.333; Network Port=446; Package Collection=MSDB2COL;
Process Binary as Character=False; Connect Timeout=15; Units of Work=RUW;
DBMS Platform=DB2/AS400;Defer Prepare=False;Rowset Cache Size=0; Max Pool Size=100;
Persist Security Info=True;Connection Pooling=True;Derive Parameters=False;
システムが自動/ランダムパラメータを設定しないように、不足しているパラメータを追加してください。これで問題が解決するはずです。
この問題を除外するには、リンクサーバークエリが作成されているか、OSのローカル管理者であるユーザーのコンテキストで実行されていることを確認します
問題はアーキテクチャでした。 32ビットでした。 SQL Server 2014 Enterprise 64ビットを搭載した別のサーバーにシステムを移行しました。すべての問題は解決しました- MelgoV (質問の作成者)。
他の人を助けるためにコメントに残された他の提案:
構成の変更中を除いて、再起動する必要があるのは正常な動作ではありません。コアデータベースの安定性を重視する場合は、in processオプションを無効にする必要があります。そうしないと、リンクサーバードライバーのエラーによってエンジンがクラッシュする可能性があります。
動作するのは簡単なことではなく、たとえばネットワーク全体でセキュリティ資格情報を提示するためにどのように、何を使用するかなど、さまざまな影響があります。あなたがその道を行くなら、それを解くために一日を費やすことを期待してください。
この問題は、Microsoftドライバー自体に関係している可能性があります。代わりに IBM提供のドライバー を使用してください。これをインストールする手順は ここにあります のようになります。ベンダー提供のドライバーは、はるかに優れていることがよくあります。Microsoftから提供されているドライバーと比較して、より安定しており、より高いパフォーマンスを発揮します。