web-dev-qa-db-ja.com

リンクサーバーを再読み込みする方法

Microsoft SQL Server 2014 Enterprise Editionを使用しています。サーバーを再起動するか、MSSQLSERVERサービスを停止する必要があるリンクサーバーで問題が発生します。サーバーが再度実行されている場合、(DB2への)リンクサーバーは正しく機能せず、SQL Serverは次のエラーを表示します。

メッセージ7302、レベル16、状態1、行10
リンクサーバー "Airspe"のOLE DBプロバイダー "DB2OLEDB"のインスタンスを作成できません。

サーバーを数回再起動した後にのみ、リンクサーバーが機能し始めます。

  1. リンクサーバーを起動するためにサーバーを数回再起動する必要があるのはなぜですか?
  2. 他の解決策はありますか?

これは、リンクサーバーの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'

これはプロバイダー設定です: provider_configuration

14
MelgoV

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;

システムが自動/ランダムパラメータを設定しないように、不足しているパラメータを追加してください。これで問題が解決するはずです。

1
MarmiK

この問題を除外するには、リンクサーバークエリが作成されているか、OSのローカル管理者であるユーザーのコンテキストで実行されていることを確認します

https://support.Microsoft.com/en-us/help/2647989/error-message-when-you-try-to-create-an-instance-of-an-ole-db-provider- in-sql-server-cannot-create-an-instance-of-ole-db-provider

1
JRGWV

コミュニティwikiの回答

問題はアーキテクチャでした。 32ビットでした。 SQL Server 2014 Enterprise 64ビットを搭載した別のサーバーにシステムを移行しました。すべての問題は解決しました- MelgoV (質問の作成者)。


他の人を助けるためにコメントに残された他の提案:

構成の変更中を除いて、再起動する必要があるのは正常な動作ではありません。コアデータベースの安定性を重視する場合は、in processオプションを無効にする必要があります。そうしないと、リンクサーバードライバーのエラーによってエンジンがクラッシュする可能性があります。

動作するのは簡単なことではなく、たとえばネットワーク全体でセキュリティ資格情報を提示するためにどのように、何を使用するかなど、さまざまな影響があります。あなたがその道を行くなら、それを解くために一日を費やすことを期待してください。


この問題は、Microsoftドライバー自体に関係している可能性があります。代わりに IBM提供のドライバー を使用してください。これをインストールする手順は ここにあります のようになります。ベンダー提供のドライバーは、はるかに優れていることがよくあります。Microsoftから提供されているドライバーと比較して、より安定しており、より高いパフォーマンスを発揮します。

0
user126897