MSDASQL を使用するリンク サーバー クエリがエラー 7416 で失敗する

適用対象:

  • 2026 年 4 月以降の SQL Server 2025 CU および GDR の更新プログラム
  • 2026 年 3 月以降の SQL Server 2022 CU および GDR の更新プログラム
  • 2026 年 4 月以降の SQL Server 2019 CU および GDR の更新プログラム
  • 2026 年 4 月以降の SQL Server 2017 CU および GDR の更新プログラム
  • SQL Server 2016 SP3 および Azure Connect Pack GDR 更新プログラム (2026 年 4 月以降)
  • Azure SQL Managed Instance

まとめ

この記事では、 MSDASQL (OLE DB Provider for ODBC Drivers) プロバイダーを使用し、プロバイダー文字列を指定するリンク サーバー クエリが失敗し、エラー 7416 が生成されるという既知の問題について説明します。 この記事では、更新プログラムをロールバックせずにリンク サーバーの接続を復元する回避策についても説明します。

Symptoms

MSDASQL プロバイダーを使用し、プロバイダー文字列 (@provstr) を指定するリンク サーバー クエリは失敗し、sysadmin 固定サーバー ロールのメンバーではないユーザーがクエリを実行すると、次のエラー メッセージが返されます。

メッセージ 7416、レベル 16
ログイン マッピングが存在しないので、リモート サーバーへのアクセスが拒否されました。

リンク サーバーとログイン マッピングが正しく構成されている場合でも、エラーが発生する可能性があります。

原因

データベース エンジンのより厳密な接続検証チェックでは、以前のビルドでこれらの接続が許可されている場合でも、MSDASQL プロバイダーを使用する特定のリンク サーバー構成の接続を拒否できます。

対処法

更新プログラムをロールバックせずにこの問題を回避するには、次のいずれかの方法を使用します。

  • 構成でプロバイダー文字列 (@provstr) が必要ない場合は、リンク サーバー定義から削除します。
  • プロバイダー文字列 (User ID) に@provstr エントリを追加します。 たとえば、 User ID=<value>を設定します。 プロバイダー文字列にも UID を含める必要があります。

影響を受けるユーザーに sysadmin アクセス許可を付与することで、エラーを防ぐこともできます。 ただし、この方法は使用しないことをお勧めします。