Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureAzure Synapse Analytics
Система платформы аналитики (PDW)
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Возвращает сведения о первичном ключе заданной таблицы в текущей среде.
Соглашения о синтаксисе Transact-SQL
Синтаксис
Синтаксис для SQL Server, База данных SQL Azure, Azure Synapse Analytics, система платформы аналитики (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 не задано, применяются правила видимости таблиц по умолчанию базовой системы управления базами данных (СУБД).
В SQL Server, если текущий пользователь владеет таблицей с указанным именем, возвращаются столбцы этой таблицы. Если @table_owner не указан, а текущий пользователь не владеет таблицей с указанным @table_name, эта процедура ищет таблицу с указанным @table_name владельцем базы данных. Если такая таблица существует, возвращаются ее столбцы.
[ @table_qualifier = ] N'table_qualifier'
Квалификатор таблицы.
@table_qualifier имеет имя sysname с значением по умолчаниюNULL. Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (<qualifier>.<owner>.<name>). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, в которой находится таблица.
Значения кода возврата
Нет.
Результирующий набор
| Имя столбца | Тип данных | Description |
|---|---|---|
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 процедура эквивалентна SQLPrimaryKeys ODBC. Результаты упорядочены по TABLE_QUALIFIER, TABLE_OWNERи TABLE_NAMEKEY_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 и система платформы аналитики (PDW)
В следующем примере возвращается первичный ключ таблицы DimAccount в базе данных AdventureWorksPDW2012. Он возвращает нулевые строки, указывающие, что в таблице нет первичного ключа.
-- Uses AdventureWorksPDW
EXECUTE sp_pkeys @table_name = N'DimAccount';