OLE DB Driver for SQL Server(MSOLEDBSQL)の利用がうまくいかないのでバージョンを変えたら解決

OLE DB Driver for SQL Server(MSOLEDBSQL)を利用しようと思ったが、Microsoft OLE DB Driver 19 for SQL Serverでうまくいかなかったので、バージョンを18にしたらうまくいった。

背景

Microsoftより、OLE DBに、Microsoft OLE DB Driver for SQL Server(MSOLEDBSQL)を使うように推奨されているのだが、未だにSQLOLEDBやSQLNCLIをつかった例が大半を占めており、これからはMSOLEDBSQLだけ利用するようにしようとして、インストールして使ってみた。

事実

  • Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は非推奨のままであり、新しい開発作業に使用することはできません。 代わりに、新しい Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) を使用します。これは、最新のサーバー機能で更新されます。

Microsoft OLE DB Provider for SQL Server | Microsoft Learn

  • SQL Server Native Client (SQLNCLI) は非推奨のままであり、新しい開発作業に使用することはできません。 代わりに、新しい Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) を使用します。これは、最新のサーバー機能で更新されます。

詳細 - SQL Server Native Client | Microsoft Learn

  • 以前の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) と SQL Server Native Client OLE DB プロバイダー (SQLNCLI) は非推奨のままであり、新しい開発作業にはどちらの使用もお勧めできません。

  • 新しい Microsoft OLE DB Driver for SQL Server を既存のアプリケーションで使用するには、使用している接続文字列を SQLOLEDB または SQLNCLI から MSOLEDBSQL に変換することを計画する必要があります。

Microsoft OLE DB Driver for SQL Server - OLE DB Driver for SQL Server | Microsoft Learn

  • OLE DB Driver for SQL Server は、以前のバージョンの Microsoft OLE DB プロバイダーとサイドバイサイドでインストールできます。

OLE DB Driver for SQL Server のインストール - OLE DB Driver for SQL Server | Microsoft Learn

  • MSOLEDBSQLを使うには、別途インストールが必要。

試したことと確認

現在最新のMSOLEDBSQL version19をインストールして使ってみる

接続文字列は以下

"Provider=MSOLEDBSQL19;Server={サーバのアドレス};Database={データベース名};Trusted_Connection=yes;Encrypt=Optional;"

⇛NG

非推奨ではあるが、SQLOLEDBを使ってみる
"Provider=SQLOLEDB;Data Source={サーバのアドレス};Initial Catalog={データベース名};Integrated Security=SSPI;"

⇛OK

version 19では、セキュリティが強化されているので、version 18をインストールしてみる(併存可能)
"Provider=MSOLEDBSQL;Server={サーバのアドレス};Database={データベース名};Trusted_Connection=yes;"

⇛OK

まとめ

サーバのセキュリティ対応が必要かもしれないので、version 18を使って解決とした(サーバ側は試せないので)

MSOLEDBSQL のメジャー バージョン間の違い - OLE DB Driver for SQL Server | Microsoft Learn