次の方法で共有


カタログ関数の使用

どのようなデータベースであっても、その構造は、データベースに格納されたデータを保持するような構造になっています。この構造の定義は、権限などその他の情報と共にカタログに保存されます。カタログは、システム テーブルのセットとして実装され、データ辞書と呼ばれることもあります。

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

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

linked_server_name.catalog.schema.object_name

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

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

リンク サーバー名とカタログ名を把握している場合、次の ODBC カタログ関数の CatalogName に、これらの名前を 2 部構成の名前 (linked_server_name**.**catalog) で指定することで、目的のカタログからカタログ情報を取得できます。

  • SQLColumnPrivileges
  • SQLColumns
  • SQLPrimaryKeys
  • SQLStatistics
  • SQLTablePrivileges
  • SQLTables

2 部構成の名前 linked_server_name**.**catalog は、SQLForeignKeysFKCatalogNamePKCatalogName にも使用できます。

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

  • sqlncli.h
    リンク サーバーのカタログ関数の関数プロトタイプと定数定義を含むファイルです。sqlncli.h を ODBC アプリケーションにインクルードし、アプリケーションのコンパイル時にはこのファイルをインクルード パスに配置しておく必要があります。
  • sqlncli.lib
    リンカのライブラリ パスに配置し、リンク対象のファイルとして指定する必要があります。sqlncli.lib は SQL Native Client ODBC ドライバと共に配布されます。
  • sqlncli.dll
    実行時に存在している必要があります。sqlncli.dll は SQL Native Client ODBC ドライバと共に配布されます。

参照

概念

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

その他の技術情報

分散クエリ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手