Teilen über


sp_pkeys (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics 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 für SQL Server, Azure SQL-Datenbank, Azure Synapse Analytics, Analytics Platform System (PDW).

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

Argumente

[ @table_name = ] N'table_name'

Gibt die Tabelle an, für die Informationen zurückgegeben werden sollen. @table_name ist "sysname" ohne Standard. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt.

[ @table_owner = ] N'table_owner'

Gibt den Besitzer der angegebenen Tabelle an. @table_owner ist "sysname" mit der Standardeinstellung "NULL. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Wenn @table_owner nicht angegeben ist, gelten die Standardtabellensichtsregeln des zugrunde liegenden Datenbankverwaltungssystems (DBMS).

In SQL Server werden die Spalten einer Tabelle zurückgegeben, wenn der aktuelle Benutzer/die aktuelle Benutzerin eine Tabelle mit dem angegebenen Namen besitzt. Wenn die @table_owner nicht angegeben ist und der aktuelle Benutzer keine Tabelle mit dem angegebenen @table_name besitzt, sucht dieses Verfahren nach einer Tabelle mit dem angegebenen @table_name , die sich im Besitz des Datenbankbesitzers befindet. Wenn eine Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.

[ @table_qualifier = ] N'table_qualifier'

Der Tabellenqualifizierer. @table_qualifier ist "sysname" mit einem Standardwert von NULL. Verschiedene DBMS-Produkte unterstützen die 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.

Resultset

Spaltenname Datentyp Beschreibung
TABLE_QUALIFIER sysname Der Name des Tabellenqualifizierers. Dieses Feld kann sein NULL.
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 für jede Spalte der TABLE_NAME zurückgegebenen Spalte. In SQL Server stellt diese Spalte den Spaltennamen dar, wie in der sys.columns Tabelle aufgeführt. 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 dies nicht für die Datenquelle gilt.

Hinweise

sp_pkeys gibt Informationen zu Spalten zurück, die explizit mit einer PRIMARY KEY Einschränkung definiert sind. Da nicht alle Systeme explizit benannte Primärschlüssel unterstützen, bestimmt die Gateway-Implementierung, was als Primärschlüssel gilt. Der Begriff Primärschlüssel bezieht sich auf einen logischen Primärschlüssel für eine Tabelle. Jeder schlüssel, der als logischer Primärschlüssel aufgeführt ist, wird erwartet, dass ein eindeutiger Index dafür definiert ist. Dieser eindeutige Index wird auch in sp_statistics.

Die sp_pkeys gespeicherte Prozedur entspricht SQLPrimaryKeys in ODBC. Die Ergebnisse werden nach TABLE_QUALIFIER, TABLE_OWNER, , TABLE_NAMEund KEY_SEQ.

Berechtigungen

Erfordert die SELECT-Berechtigung im Schema.

Beispiele

Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022- oder AdventureWorksDW2022-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.

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 gibt null Zeilen zurück, die angeben, dass die Tabelle keinen Primärschlüssel aufweist.

-- Uses AdventureWorksPDW

EXEC sp_pkeys @table_name = N'DimAccount';