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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しいアプリケーション開発には推奨されません。 今後、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server または最新の Microsoft ODBC Driver for SQL Server に切り替えてください。 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には、BCPDELAYREADFMT というbcp_readfmtの動作を制御する新しい eOption があります。

メタデータ検出を強化するために、SQL Server 2012 (11.x) では次の ODBC 関数が強化されています。

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

  • IColumnsInfo::GetColumnInfo

  • IColumnsRowset::GetColumnsRowset

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

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

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

  • sp_describe_first_result_set

  • sp_describe_undeclared_parameters

参照

SQL Server Native Client の機能