sp_pkeys (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse in Microsoft Fabric

Gibt Primärschlüsselinformationen für eine einzelne Tabelle in der aktuellen Umgebung zurück.

Transact-SQL-Syntaxkonventionen

Syntax

-- Syntax for SQL Server, Azure SQL Database, Azure Synapse Analytics, Parallel Data Warehouse  
  
sp_pkeys [ @table_name = ] 'name'       
    [ , [ @table_owner = ] 'owner' ]   
    [ , [ @table_qualifier = ] 'qualifier' ]  

Argumente

[ @table_name= ] 'name'
Ist die Tabelle, für die Informationen zurückgegeben werden sollen. name ist vom Datentyp sysname und hat keinen Standardwert. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt.

[ @table_owner= ] 'owner'
Gibt den Besitzer der angegebenen Tabelle an. owner ist vom Datentyp sysname. Der Standardwert ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn owner nicht angegeben ist, werden die Standardregeln für die Sichtbarkeit von Tabellen des zugrunde liegenden DBMS angewendet.

In SQL Server werden die Spalten einer Tabelle zurückgegeben, wenn der aktuelle Benutzer/die aktuelle Benutzerin eine Tabelle mit dem angegebenen Namen besitzt. Falls owner nicht angegeben ist und der aktuelle Benutzer oder die aktuelle Benutzerin keine Tabelle mit dem angegebenen name besitzt, wird nach einer Tabelle mit dem angegebenen name gesucht, die im Besitz des/der Datenbankbesitzer*in ist. Wenn eine Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.

[ @table_qualifier= ] 'qualifier'
Der Tabellenqualifizierer. qualifier ist vom Datentyp sysnameund hat den Standardwert NULL. Verschiedene DBMS-Produkte unterstützen eine dreiteilige Benennung für Tabellen (qualifier.owner.name). In SQL Server stellt diese Spalte den Datenbanknamen dar. Bei einigen anderen Produkten stellt sie den Servernamen der Datenbankumgebung für die Tabelle dar.

Rückgabecodewerte

Keine

Resultsets

Spaltenname Datentyp BESCHREIBUNG
TABLE_QUALIFIER sysname Der Name des Tabellenqualifizierers. Dieses Feld kann den Wert NULL annehmen.
TABLE_OWNER sysname Der Name des/der Tabellenbesitzer*in. Dieses Feld gibt immer einen Wert zurück.
table_name sysname Der Name der Tabelle. In SQL Server stellt diese Spalte den Tabellennamen dar, der in der sysobjects-Tabelle aufgeführt ist. Dieses Feld gibt immer einen Wert zurück.
COLUMN_NAME sysname Der Name der Spalte. Er wird für jede Spalte von TABLE_NAME zurückgegeben. In SQL Server stellt diese Spalte den Spaltennamen dar, der in der sys.columns-Tabelle aufgeführt ist. Dieses Feld gibt immer einen Wert zurück.
KEY_SEQ smallint Die Sequenznummer der Spalte bei einem Primärschlüssel, der durch mehrere Spalten definiert wird.
PK_NAME sysname Der Primärschlüsselbezeichner. Gibt NULL zurück, wenn nicht auf die Datenquelle anwendbar

Bemerkungen

sp_pkeys gibt Informationen zu den Spalten zurück, die mit einer PRIMARY KEY-Einschränkung explizit definiert werden. Da nicht alle Systeme explizit benannte Primärschlüssel unterstützen, bestimmt die Gateway-Implementierung, was als Primärschlüssel gilt. Beachten Sie, dass sich der Begriff Primärschlüssel auf einen logischen Primärschlüssel für eine Tabelle bezieht. Es wird davon ausgegangen, dass für jeden als logischen Primärschlüssel aufgeführten Schlüssel ein eindeutiger Index definiert ist. Dieser eindeutige Index wird auch in sp_statistics zurückgegeben.

Die gespeicherte Prozedur sp_pkeys entspricht in ODBC SQLPrimaryKeys. Die zurückgegebenen Ergebnisse werden folgendermaßen sortiert: TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME und KEY_SEQ.

Berechtigungen

Erfordert SELECT-Berechtigung für das Schema.

Beispiele

Im folgenden Beispiel wird der Primärschlüssel für die HumanResources.Department-Tabelle in der AdventureWorks2022-Datenbank abgerufen.

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

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

Im folgenden Beispiel wird der Primärschlüssel für die DimAccount-Tabelle in der AdventureWorksPDW2012-Datenbank abgerufen. Es werden null Zeilen zurückgegeben, was darauf hinweist, dass die Tabelle keinen Primärschlüssel besitzt.

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

Weitere Informationen

Gespeicherte Prozeduren für Kataloginformationen (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)