SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2022 / Managed Instance のリンクサーバーでの SQLNCLI の利用について

leave a comment

最近、SQL Server のリンクサーバーのプロバイダーを見ていて気づいたのですが、SQL Server 2022 では、SQLNCLI11 がリンクサーバーのプロバイダーから削除されていました。

左が SQL Server 2022 / 右がそれより前のバージョンの SQL Server のリンクサーバーのプロバイダーとなるのですが、2022 では SQLNCLI11 が削除されていますね。

image

最近、次のアナウンスが行われ、Managed Instance でも SQLNCLI (SNAC) に対しての対応が行われたようです。

SQL Server Native Client で記載されているのですが、SNAC / SNLCLI については、SQL Server 2022 / SSMS 19 からは削除されたことが明記されています。

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。

この対応により、SQL Server 2022 で使用可能なリンクサーバーのプロバイダーから SQLNCLI11 の削除が行われたようです。

従来から SQL Server で SQL Server に対してリンクサーバーを作成する際に、サーバーの種類として「SQL Server」を指定した場合は、プロバイダーとして SQLNCLI が使用され、リンクサーバーの設定が行われていました。
image

SQL Server 2022 でもサーバーの種類として「SQL Server」を指定することができ、これを指定した場合には、sys.servers では provider としては、SQLNCLI として登録が行われます。

ただし、SQL Server 2019 以降は次の動作に変更が行われていたようです。

image

SQL Server 2019 以降は、SQLNCLI として登録が行われた場合、「MSOLEDBSQL」(Microsoft OLE DB Driver for SQL server) が使用されるようになり、自動的に使用するプロバイダーがリダイレクトされるようになったようです。

SQL Server 2019 では、プロバイダーとして、SQLNCLI11 が登録されていますので、SQLNCLI ベースのプロバイダーを使用したい場合には、SQL Server Native Client 11.0 を使用してリンクサーバーを作ることで明示的に使用することはできそうですが、SQL Server 2022 では SQLNCLI11 が削除されていますので、SNAC を使用したリンクサーバーを作成する術はないのかと。

私が把握できている範囲では、SQLNCLI にマッピングされているのが、MSOLEDBSQL になったことによる問題は確認できていないので、単純にリンクサーバーでクエリを実行しているケースでは使用されるプロバイダーが変更されたことの問題はなさそうですが、「SQL Server を指定して作成したリンクサーバーで使用されるプロバイダーが変わっている」ことについては、把握してくと良いのではないでしょうか。

Share

Written by Masayuki.Ozawa

5月 6th, 2023 at 9:50 pm

Leave a Reply