SQL Server Native Client でのメタデータ検出

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) は同梱されていません。

  • SQL Server 2022 (16.x) 以降のバージョン
  • SQL Server Management Studio 19 以降のバージョン

SQL Server Native Client (SQLNCLI または SQLNCLI11) と従来の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しいアプリケーション開発には推奨されません。

新しいプロジェクトの場合は、次のいずれかのドライバーを使用します。

SQL Server データベース エンジン (バージョン 2012 から 2019) のコンポーネントとして付属する SQLNCLI については、この「サポート ライフサイクルの例外」を参照してください。

SQL Server 2012 (11.x) のメタデータ検出の機能強化により、SQL Server Native Client アプリケーションでは、クエリの実行から返される列またはパラメーターのメタデータが、クエリを実行する前に指定したメタデータ形式と同じか、互換性があることを確認できます。 クエリの実行後に返されたメタデータにクエリの実行前に指定したメタデータ形式との互換性がない場合は、エラーが発生します。

bcp 関数と ODBC 関数、および IBCPSession インターフェイスと IBCPSession2 インターフェイスでは、遅延読み取り (遅延メタデータ検出) を指定して、クエリ出力操作でメタデータ検出を回避できます。 その結果、パフォーマンスが向上し、メタデータ検出のエラーを回避できます。

SQL Server 2012 (11.x) で SQL Server Native Client を使用してアプリケーションを開発し、SQL Server 2012 (11.x) より前のバージョンのサーバーに接続する場合、メタデータ検出機能はサーバーのバージョンに対応します。

解説

SQL Server 2012 (11.x) では、次の bcp 関数が強化され、メタデータ検出が強化されました。

また、 bcp_setbulkmodeを使用してメタデータ形式を指定すると、パフォーマンスが向上します。

bcp_control には、bcp_readfmtの動作を制御する新しい eOption BCPDELAYREADFMTがあります。

次の ODBC 関数が SQL Server 2012 (11.x) で強化され、メタデータ検出が強化されました。

SQL Server 2012 (11.x) では次の OLE DB メンバー関数が機能強化され、メタデータ検出機能が向上しています。

  • IColumnsInfo::GetColumnInfo

  • IColumnsRowset::GetColumnsRowset

  • ICommandWithParameters::GetParameterInfo (詳細は「ICommandWithParameters」を参照)

IBCPSession::BCPSetBulkMode を使用してメタデータ形式を指定したときのパフォーマンスも向上しています。

SQL Server Native Client でのメタデータ検出の改善は、SQL Server 2012 (11.x) に 2 つのストアド プロシージャが追加されたために可能です。

  • sp_describe_first_result_set

  • sp_describe_undeclared_parameters

参照

SQL Server Native Client の機能