野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

SQLServer の異なる ODBC ドライバの違い

pyodbc + sqlalchemy を使用して SQLServer データベースに接続する際に、次のエラーに遭遇しました: [IM002] [Microsoft][ODBC ドライバー マネージャ] データ ソース名が見つからず、デフォルト ドライバーが指定されていません (0) (SQLDriverConnect)

sqlalchemy mssql+pyodbc データベースドキュメント を調べたところ:

ODBC ドライバーをインストールする必要があります。また、ホスト名方式でデータベースに接続する場合は、ドライバー名を指定する必要がありますが、さまざまなドライバーがあり、1 つのドライバーにも異なる名前があることがわかりました。それで、いろいろと調査しました。

どうしてこんなに多くのドライバーがあるのか#

Microsoft SQL Server のドライバーの歴史 - SQL Server | Microsoft Docs の中の非常に明確な説明を引用して再編集します:

Microsoft ODBC Driver for SQL Server には 3 世代の異なるドライバーがあります。

  • 第 1 世代の「SQL Server」ODBC ドライバーは、Windows Data Access コンポーネント の一部として提供されています。新しく開発されるプログラムには、このドライバーの使用は推奨されません。
  • SQL Server 2005 からは、SQL Server Native Client が ODBC インターフェースを含み、SQL Server 2005 から SQL Server 2012 に付属している ODBC ドライバーです。新しく開発されるプログラムにも、このドライバーの使用は推奨されません。
  • SQL Server 2012 以降は、Microsoft ODBC Driver for SQL Server ドライバーが最新のサーバー機能に合わせて更新されます。

SQL Server Native Client#

SQL Server 2005 では、ODBC 接続用の SQL Server Native Client のサポートが導入されました。

SQL Server 2005 から SQL Server 2012 まで、SQL Server Native Client(通常は SNAC と略されます)の開発が行われました。SQL Server Native Client 10.0 は SQL Server 2008 と共にリリースされ、SQL Server Native Client 11.0 は SQL Server 2012 と共にリリースされました。

すべての歴史的バージョンはここからダウンロードできます:Download SQL Server Native Client - ConnectionStrings.com

使用したい場合は、最新バージョンのインストールを見つければ大丈夫です。ドライバーは前方互換性があります。注意が必要なのは、異なる SQLServer バージョンで設定されるドライバー名です:

  • Driver={SQL Server Native Client} (SQL Server 2005)
  • Driver={SQL Server Native Client 10.0} (SQL Server 2008)
  • Driver={SQL Server Native Client 11.0} (SQL Server 2012 以降)

しかし、Microsoft は 2013 年に新しい ODBC ドライバーを発表しました(https://docs.microsoft.com/zh-cn/archive/blogs/sqlnativeclient/introducing-the-new-microsoft-odbc-drivers-for-sql-server)、つまり以下のものです。2017 年には SNAC の開発を中止し、以下のドライバーに置き換えられました。新しいドライバーは性能が向上し、SQLServer 2012 以降のデータベースの新機能をサポートしています。

Microsoft ODBC Driver for SQL Server#

最新ドライバーのダウンロードリンク   |   歴史的バージョンのダウンロードリンク

使用方法は、ドライバーをインストールし、ドライバー名を設定することです。

ドライバー名の形式:

  • Driver={ODBC Driver XX for SQL Server} (XX はインストールしたドライバーのバージョン名)
データベース バージョン →
↓ ドライバー バージョン
Azure SQL DatabaseAzure Synapse AnalyticsAzure SQL マネージド インスタンスSQL Server 2019SQL Server 2017SQL Server 2016SQL Server 2014SQL Server 2012SQL Server 2008 R2SQL Server 2008SQL Server 2005
17.6はいはいはいはいはいはいはいはい
17.5はいはいはいはいはいはいはいはい
17.4はいはいはいはいはいはいはいはい
17.3はいはいはいはいはいはいはいはいはいはい
17.2はいはいはいはいはいはいはいはいはい
17.1はいはいはいはいはいはいはいはいはい
17.0はいはいはいはいはいはいはいはいはい
13.1はいはいはいはいはいはい
13はいはいはいはいはい
11はいはいはいはいはい

SQL バージョンの互換性 | 表は Microsoft からのものです

まとめ#

ODBC Driver for SQL Server は性能が向上しており、新しいバージョンには多くの最適化が施され、新機能もあります。2021 年に開発を行う場合は、これを選ぶべきです。

異なるドライバー バージョンがサポートするデータベース バージョンも異なります。自分の SQLServer バージョンをしっかり確認し、対応するバージョンのドライバーをインストールし、ドライバー名を正しく設定してください。

非常に素晴らしいウェブサイトも見つけました:ConnectionStrings

ConnectionStrings.com は、開発者がソフトウェアをデータに接続するのを助けます。接続文字列に関する直接的なリファレンスであり、接続文字列に関する記事やデータベース接続コンテンツの知識ベース、開発者が互いに解決策を見つけるのを助ける Q&A フォーラムのホストです。

ConnectionStrings.com は開発者がソフトウェアをデータベースに接続するのを助けます。接続文字列に関する直接的なリファレンスであり、データベース接続に関するコンテンツや記事の知識ベース、開発者が互いに解決策を見つけるための Q&A フォーラムを提供しています。

参考リンク#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。