web-dev-qa-db-ja.com

SQL Server 2016にアップグレードした後、リンクサーバーへのリモートクエリ(openquery)が失敗する

SQL Server 2016 Enterpriseエディションへのアップグレード後に問題が発生しました。リンクサーバーとローカルサーバーの両方がver.13.0.4435.0にアップグレードされました

私は次のことを試しました:2016へのアップグレード後にリンクサーバーを削除または作成します。問題は解決しません。

これはエラーが発生するコードスニペットです:

SELECT t.NAME
    , t.Disabled
FROM openquery([Linked_Server], 'select t.Name, t.Disabled 
    from [Linked_Server].[Database-1A].[dbo].[My_tbl] t where t.ID=232627') t;

そしてエラーメッセージ:

リンクサーバー "Linked_Server"のOLE DBプロバイダー "SQLNCLI11"が、メッセージ "遅延準備を完了できませんでした。"を返しました。メッセージ5000 sys.serversにサーバー「リンクサーバー」が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアドプロシージャsp_addlinkedserverを実行して、サーバーをsys.serversに追加します。

3
Igor V.

送信するクエリtoリンクサーバー(OPENQUERY経由)には、リンクサーバーへの独自の参照(4部構成の名前経由)も含めないでください。同じリンクサーバー名を持つ独自のループバックリンクサーバーがあります(その場合でも、リンクサーバーをそのようにスタックしようとはしません)。試してください:

SELECT t.Name, t.Disabled
FROM OPENQUERY
(
   [Linked_Server], 
   N'select t.Name, t.Disabled 
     from [Database-1A].[dbo].[My_tbl] AS t 
     where t.ID=232627;'
) AS t;
3
Aaron Bertrand