適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric のウェアハウス
Microsoft Fabric の 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_name は sysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。
[ @table_owner = ] N'table_owner
指定したテーブルのテーブル所有者を指定します。
@table_owner は sysname で、既定値は NULL です。 ワイルドカード パターン マッチングはサポートされていません。
@table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性ルールが適用されます。
SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定した@table_nameを持つテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier = ] table_qualifier
テーブル修飾子。
@table_qualifier は sysname で、既定値は 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_QUALIFIER、 TABLE_OWNER、 TABLE_NAME、および KEY_SEQ順に並べられます。
アクセス許可
スキーマに対する SELECT アクセス許可が必要です。
例
この記事のコード サンプルでは、AdventureWorks2025 または AdventureWorksDW2025 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。
次の例では、HumanResources.Department データベースの AdventureWorks2025 テーブルの主キーを取得します。
USE AdventureWorks2022;
GO
EXECUTE sp_pkeys
@table_name = N'Department',
@table_owner = N'HumanResources';
例: Azure Synapse Analytics、Analytics Platform System (PDW)
次の例では、DimAccount データベースの AdventureWorksPDW2012 テーブルの主キーを取得します。 テーブルに主キーがないことを示す 0 行が返されます。
-- Uses AdventureWorksPDW
EXECUTE sp_pkeys @table_name = N'DimAccount';