カタログ関数の使用
どのようなデータベースであっても、その構造は、データベースに格納されたデータを保持するような構造になっています。 この構造の定義は、権限などその他の情報と共にカタログに保存されます。カタログは、システム テーブルのセットとして実装され、データ辞書と呼ばれることもあります。
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 部構成の名前を使用してカタログから情報を取得できます。CatalogName の catalog を次の ODBC カタログ関数で使用します。
SQLColumnPrivileges
SQLColumns
SQLPrimaryKeys
SQLStatistics
SQLTablePrivileges
SQLTables
2 部構成のlinked_server_name。カタログは、SQLForeignKeys の FKCatalogName と PKCatalogName でもサポートされています。
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