sp_pkeys (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)Lager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar primärnyckelinformation för en enskild tabell i den aktuella miljön.

Transact-SQL syntaxkonventioner

Syntax

Syntax for 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' ]
[ ; ]

Arguments

[ @table_name = ] N'table_name'

Specificerar tabellen för vilken information ska returneras. @table_name är sysname, utan standard. Wildcard-mönstermatchning stöds inte.

[ @table_owner = ] N'table_owner'

Specificerar tabellägaren för den angivna tabellen. @table_owner är sysname, med standardvärdet .NULL Wildcard-mönstermatchning stöds inte. Om @table_owner inte specificeras gäller standardreglerna för tabellsynlighet i det underliggande databashanteringssystemet (DBMS).

I SQL Server, om den nuvarande användaren äger en tabell med det angivna namnet, returneras kolumnerna i den tabellen. Om @table_owner inte är specificerat och den nuvarande användaren inte äger en tabell med angiven @table_name, letar denna procedur efter en tabell med den angivna @table_name som ägs av databasägaren. Om en sådan finns, returneras kolumnerna i den tabellen.

[ @table_qualifier = ] N'table_qualifier'

Tabellkvalificeringen. @table_qualifier är sysname, med standardvärdet .NULL Olika DBMS-produkter stödjer tredelad namngivning för tabeller (<qualifier>.<owner>.<name>). I SQL Server representerar denna kolumn databasens namn. I vissa produkter representerar den servernamnet på databasmiljön i tabellen.

Returnera kodvärden

Ingen.

Resultatuppsättning

Kolumnnamn Datatyp Description
TABLE_QUALIFIER sysname Namnet på tabellkvalificeraren. Detta fält kan vara NULL.
TABLE_OWNER sysname Namnet på bordsägaren. Detta fält returnerar alltid ett värde.
TABLE_NAME sysname Tabellens namn. I SQL Server representerar denna kolumn tabellnamnet som listas i sysobjects-tabellen. Detta fält returnerar alltid ett värde.
COLUMN_NAME sysname Namn på kolumnen, för varje kolumn i den TABLE_NAME returnerade. I SQL Server representerar denna kolumn kolumnnamnet som anges i tabellen sys.columns . Detta fält returnerar alltid ett värde.
KEY_SEQ smallint Sekvensnummer för kolumnen i en primärnyckel med flera kolumner.
PK_NAME sysname Primärnyckelidentifierare. Returer NULL om det inte gäller datakällan.

Anmärkningar

sp_pkeys returnerar information om kolumner som explicit definierats med en PRIMARY KEY begränsning. Eftersom inte alla system stödjer explicit namngivna primärnycklar, avgör gateway-implementatören vad som utgör en primärnyckel. Termen primärnyckel syftar på en logisk primärnyckel för en tabell. Varje nyckel som anges som en logisk primärnyckel förväntas ha ett unikt index definierat på sig. Detta unika index returneras också i sp_statistics.

Den lagrade sp_pkeys proceduren motsvarar SQLPrimaryKeys den i ODBC. Resultaten är ordnade efter TABLE_QUALIFIER, TABLE_OWNER, , TABLE_NAMEoch KEY_SEQ.

Permissions

Kräver SELECT tillstånd på schemat.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

Följande exempel hämtar primärnyckeln för HumanResources.Department tabellen i databasen AdventureWorks2025 .

USE AdventureWorks2022;
GO

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

Följande exempel hämtar primärnyckeln för DimAccount tabellen i databasen AdventureWorksPDW2012 . Den returnerar noll rader vilket indikerar att tabellen inte har någon primärnyckel.

-- Uses AdventureWorksPDW
EXECUTE sp_pkeys @table_name = N'DimAccount';