カタログ関数の使用

適用対象: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 Native Client ODBC ドライバーを使用すると、アプリケーションは ODBC カタログ関数の呼び出しを通じてデータベース構造を判別できます。 カタログ関数は情報を結果セットとして返す関数で、カタログのシステム テーブルをクエリするカタログ ストアド プロシージャを使用して実装されます。 たとえば、アプリケーションが、システム上のすべてのテーブルに関する情報を含む結果セット、または特定のテーブルが持つすべての列に関する情報を含む結果セットを要求するとします。 標準の ODBC カタログ関数は、アプリケーションが接続されているSQL Serverからカタログ情報を取得するために使用されます。

SQL Serverでは、複数の異種 OLE DB データ ソースのデータに 1 つのクエリでアクセスする分散クエリがサポートされています。 リモートの OLE DB データ ソースへアクセスするための方法として、目的のデータ ソースをリンク サーバーとして定義する方法があります。 これは、 sp_addlinkedserverを使用して行うことができます。 リンク サーバーを定義すると、このサーバーのオブジェクトを次のような 4 部構成の名前を使用して Transact-SQL ステートメントで参照できるようになります。

linked_server_name.catalog.schema.object_name

SQL Server Native Client ODBC ドライバーは、リンク サーバーからカタログ情報を取得するのに役立つ 2 つのドライバー固有の関数をサポートしています。

  • SQLLinkedServers

    ローカル サーバーに定義されているリンク サーバーの一覧を返します。

  • SQLLinkedCatalogs

    リンク サーバーに含まれるカタログの一覧を返します。

リンク サーバー名とカタログ名を取得すると、SQL Server Native Client ODBC ドライバーは、linked_server_nameの 2 部構成の名前を使用してカタログから情報を取得できますCatalogNamecatalog を次の ODBC カタログ関数で使用します。

  • SQLColumnPrivileges

  • SQLColumns

  • SQLPrimaryKeys

  • SQLStatistics

  • SQLTablePrivileges

  • SQLTables

2 部構成のlinked_server_nameカタログは、SQLForeignKeysFKCatalogNamePKCatalogName でもサポートされています。

SQLLinkedServers と SQLLinkedCatalogs を使用する場合は、次のファイルが必要です。

  • sqlncli.h

    リンク サーバーのカタログ関数の関数プロトタイプと定数定義を含むファイルです。 sqlncli.h を ODBC アプリケーションにインクルードし、アプリケーションのコンパイル時にはこのファイルをインクルード パスに配置しておく必要があります。

  • sqlncli11.lib

    リンカーのライブラリ パスに存在し、リンクされるファイルとして指定する必要があります。 sqlncli11.lib は、SQL Server Native Client ODBC ドライバーと共に配布されます。

  • sqlncli11.dll

    実行時に存在する必要があります。 sqlncli11.dllは、SQL Server Native Client ODBC ドライバーと共に配布されます。

参照

SQL Server Native Client (ODBC)
SQLColumnPrivileges
SQLColumns
SQLPrimaryKeys
SQLTablePrivileges
SQLTables
SQLStatistics