Microsoft ODBC Driver for SQL Server on Windows の機能
Windows の Microsoft ODBC Driver 18.0 for SQL Server
ODBC Driver 18.0 では、long データ型を max データ型として送信できます。そのためには、キーワード LongAsMax
を使用して設定のオンとオフを切り替えます。 有効にすると、SQL 型 SQL_LONGVARCHAR、SQL_LONGVARBINARY、および SQL_LONGWVARCHAR はそれぞれ、text、image、ntext ではなく varchar(max)、varbinary(max)、nvarchar(max) として送信されます。
接続暗号化の既定値が変更されました。 Encrypt の既定値は Yes であり、新しいキーワード Optional と Mandatory がそれぞれ、No と Yes の同意語として導入されました。 TDS 8.0 プロトコルを使用して接続するために、Strict モード (Encrypt=Strict
) が追加されました。 このモードでは、サーバー証明書は常に検証されます (TrustServerCertificate
は無視されます)。 新しいキーワード である HostnameInCertificate
を使用して、証明書内で見つかることが予想されるホスト名 (指定したサーバーと異なる場合) を指定できます。 HostnameInCertificate
は、すべての暗号化モードで使用できます。また、サーバー側の Force Encryption
オプションが有効になっている場合にも適用されます。これにより、TrustServerCertificate
を使用して無効にしない限り、ドライバーは Optional または Mandatory のモードで証明書を検証します。
ODBC Driver 18 には、SQLGetData 拡張機能が含まれています。 有効にすると、SQLGetData を使用して、行内の任意の順序 (逆方向を含む) で列データを取得できます。 この機能は互換性のために提供されているものであり、大幅にパフォーマンスが低下し、メモリ使用量が増加します。 アプリケーションは常に列に昇順でアクセスすることを強くお勧めします。 SQLGetData 拡張機能を有効にするには、接続文字列属性 GetDataExtensions
を使用するか、 SQLSetConnectAttr
関数を使用して、SQL_COPT_SS_GETDATA_EXTENSIONS
を SQL_EN_ON
に設定します。
Windows ARM64 のサポートは ODBC Driver 18.2 以降で含まれ、現在はプレビュー段階です。 ARM64 ドライバーは 64 ビット ARM64 アプリケーション専用であり、32 ビット ARM または x86/amd64 エミュレーション ドライバーは含まれません。
Windows の Microsoft ODBC Driver 17.4 for SQL Server
ODBC ドライバー17.4 には、TCP キープアライブ設定を調整する機能が含まれています。 これらは、このドライバーまたは DSN のレジストリ キーに値を追加することによって変更できます。 これらのキーは、システム データ ソースの場合は HKEY_LOCAL_MACHINE\Software\ODBC\
に、ユーザー データ ソースの場合は HKEY_CURRENT_USER\Software\ODBC\
にあります。 DSN の場合は、値を ...\Software\ODBC\ODBC.INI\<DSN Name>
に追加し、ドライバーの場合は ...\Software\ODBC\ODBCINST.INI\ODBC Driver 17 for SQL Server
に追加する必要があります。
詳細については、「ODBC コンポーネントのレジストリ エントリ」を参照してください。
その値は REG_SZ
で、次のとおりです。
KeepAlive
では、TCP がキープアライブ パケットを送信することによって、アイドル状態の接続が壊れていないかどうかを確認する頻度を制御します。 既定値は 30 秒です。KeepAliveInterval
では、応答を受信するまでキープアライブを再送信する間隔を設定します。 既定値は 1 秒です。
Windows の Microsoft ODBC Driver 13.1 for SQL Server
ODBC Driver 13.1 for SQL Server には、以前のバージョン (11) のすべての機能が含まれています。 さらに、Always Encrypted と Microsoft Entra ID (旧称 Azure Active Directory) による認証のサポートも追加されます。
Always Encrypted を使用すると、クライアントは SQL Server に暗号化キーを開示することなく、クライアント アプリケーション内の機密データを暗号化することができます。 クライアント コンピューターにインストール済みで、Always Encrypted が有効になっているドライバーでは、SQL Server クライアント アプリケーション内の機密データを自動的に暗号化および暗号化解除することにより、このセキュリティが実現されます。 このドライバーにより、SQL Server にデータを渡す前に機密性の高い列のデータが暗号化されます。 また、アプリケーションに対するセマンティクスを維持するために、クエリが自動的に書き換えられます。 同様に、ドライバーはクエリ結果に含まれている暗号化されたデータベース列に格納されているデータを透過的に暗号化解除します。 詳しくは、「Using Always Encrypted with the ODBC Driver」(ODBC ドライバーでの Always Encrypted の使用) をご覧ください。
Microsoft Entra ID を使用すると、ユーザー、DBA、アプリケーション プログラマが Microsoft Entra 認証を使用できるようになります。 詳細については、「ODBC ドライバーでの Microsoft Entra ID の使用」、および 「Microsoft Entra 認証を使用した Azure SQL または Azure Synapse Analytics への接続」に関する記事を参照してください。
Windows の Microsoft ODBC Driver 11 for SQL Server
ODBC Driver for SQL Server には、 SQL Server に付属の SQL Server 2012 (11.x)Native Client ODBC ドライバーのすべての機能が含まれています。 SQL Server Native Client の詳細については、「SQL Server Native Client プログラミング」を参照してください。 SQL Server Native Client ODBC ドライバーは、Windows オペレーティング システムに付属の ODBC ドライバーに基づいています。 詳細については、「Windows Data Access Components SDK」を参照してください。
ODBC Driver for SQL Server のこのリリースには、次の新機能が含まれています。
ログイン タイムアウトを指定するための bcp.exe -l オプション
\- l オプションでは、サーバーへの接続の試行時に、SQL Server への bcp.exe
のログインがタイムアウトするまでの秒数を指定します。 既定のログイン タイムアウトは 15 秒です。 ログイン タイムアウトは、0 から 65,534 の数値にする必要があります。 指定した値が数値以外の場合、またはその範囲外の場合、bcp.exe
によりエラー メッセージが生成されます。 0 の値は、無期限のタイムアウトを指定します。 (約) 10 秒未満のログイン タイムアウトは信頼性がありません。
ドライバー対応接続プール
ODBC Driver for SQL Server は、ドライバー対応の接続プールをサポートしています。 詳細については、「 ODBC Driver for SQL Server のドライバー対応接続プール | Microsoft Docs」を参照してください。
非同期実行 (通知方法)
ODBC Driver for SQL Server は、非同期実行 (通知方法) をサポートしています。 使用例については、「非同期実行 (通知方法) の例」を参照してください。
接続の回復性
アプリケーションを Microsoft Azure SQL データベースに接続されたままにするため、Windows 上の ODBC ドライバーは、アイドル状態の接続を復元できます。 詳細については、「 Windows ODBC ドライバーの接続レジリエンシー」を参照してください。
動作の変更
SQL Server Native Client では、表示幅が 0 だった場合、sqlcmd.exe
の -y0
オプションを使用すると、出力が 1 MB で切り捨てられました。
ODBC Driver 11 for SQL Server 以降では、-y0
を指定した場合、1 つの列で取得できるデータの量に制限はありません。 sqlcmd.exe
は、最大 2 GB (SQL Server のデータ型の最大値) の列をストリームするようになりました。
もう 1 つの違いは、-h
と -y0
の両方を指定すると、オプションの非互換性を報告するエラーが生成されるようになったことです。 列見出し間に出力する行数を指定する -h
は、-y0
と互換性がなく、ヘッダーは出力されませんでしたが、無視されました。
-y0
を使用すると、返されるデータのサイズによっては、サーバーとネットワークの両方にパフォーマンスの問題が発生するおそれがあります。