次の方法で共有


sp_pkeys (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のウェアハウス

現在の環境における、単一のテーブルに関する主キーの情報を返します。

Transact-SQL 構文表記規則

構文

SQL Server、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) の構文。

sp_pkeys
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
[ ; ]

引数

[ @table_name = ] N'table_name'

情報を返すテーブルを指定します。 @table_namesysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。

[ @table_owner = ] N'table_owner'

指定したテーブルのテーブル所有者を指定します。 @table_ownersysname で、既定値は NULL です。 ワイルドカード パターン マッチングはサポートされていません。 @table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性ルールが適用されます。

SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定した@table_nameを持つテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。

[ @table_qualifier = ] N'table_qualifier'

テーブル修飾子。 @table_qualifiersysname で、既定値は NULL です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。

リターン コードの値

なし。

結果セット

列名 データ型 説明
TABLE_QUALIFIER sysname テーブルの修飾子の名前。 このフィールドは NULLできます。
TABLE_OWNER sysname テーブル所有者の名前。 このフィールドには常に値が返されます。
TABLE_NAME sysname テーブルの名前。 SQL Server では、この列は、sysobjects テーブルに記録されているテーブル名を表します。 このフィールドには常に値が返されます。
COLUMN_NAME sysname 返された TABLE_NAME の各列の列の名前。 SQL Server では、この列は、 sys.columns テーブルに示されている列名を表します。 このフィールドには常に値が返されます。
KEY_SEQ smallint 複数列の主キーにおける列のシーケンス番号。
PK_NAME sysname 主キーの識別子。 データ ソースに該当しない場合は、 NULL を返します。

解説

sp_pkeys は、 PRIMARY KEY 制約で明示的に定義された列に関する情報を返します。 明示的に名前を付けられた主キーがすべてのシステムでサポートされているわけではないため、ゲートウェイの実装者は主キーの構成内容を決定します。 主キーという用語は、テーブルの論理主キーを指します。 論理主キーとしてリストされているすべてのキーには、一意のインデックスが定義されている必要があります。 この一意のインデックスは、 sp_statisticsでも返されます。

sp_pkeys ストアド プロシージャは、ODBC でのSQLPrimaryKeysと同じです。 結果は、 TABLE_QUALIFIERTABLE_OWNERTABLE_NAME、および KEY_SEQ順に並べられます。

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

この記事の Transact-SQL コード サンプルは AdventureWorks2022 または AdventureWorksDW2022 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。

次の例では、HumanResources.Department データベースの AdventureWorks2022 テーブルの主キーを取得します。

USE AdventureWorks2022;
GO

EXEC sp_pkeys @table_name = N'Department',
    @table_owner = N'HumanResources';

例: Azure Synapse Analytics、Analytics Platform System (PDW)

次の例では、DimAccount データベースの AdventureWorksPDW2012 テーブルの主キーを取得します。 テーブルに主キーがないことを示す 0 行が返されます。

-- Uses AdventureWorksPDW

EXEC sp_pkeys @table_name = N'DimAccount';