sp_pkeys (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Warehouse do PDW (Analytics Platform System) no Microsoft Fabric

Retorna informações de chave primária para uma única tabela no ambiente atual.

Convenções de sintaxe de Transact-SQL

Sintaxe

Sintaxe para SQL Server, Banco de Dados SQL do Azure, Azure Synapse Analytics, PDW (Analytics Platform System).

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

Argumentos

[ @table_name = ] N'table_name'

Especifica a tabela para a qual as informações serão retornadas. @table_name é sysname, sem padrão. Não há suporte para a correspondência de padrões curinga.

@table_owner [ = ] N'table_owner'

Especifica o proprietário da tabela especificada. @table_owner é sysname, com um padrão de NULL. Não há suporte para a correspondência de padrões curinga. Se @table_owner não for especificado, as regras de visibilidade de tabela padrão do DBMS (sistema de gerenciamento de banco de dados) subjacente serão aplicadas.

No SQL Server, se o usuário atual possuir uma tabela com o nome especificado, as colunas dessa tabela serão retornadas. Se o @table_owner não for especificado e o usuário atual não possuir uma tabela com o @table_name especificado, este procedimento procurará uma tabela com o @table_name especificado pertencente ao proprietário do banco de dados. Caso exista, as colunas dessa tabela serão retornadas.

@table_qualifier [ = ] N'table_qualifier'

O qualificador de tabela. @table_qualifier é sysname, com um padrão de NULL. Vários produtos DBMS suportam nomenclatura de três partes para tabelas (<qualifier>.<owner>.<name>). No SQL Server, essa coluna representa o nome do banco de dados. Em alguns produtos, representa o nome do servidor do ambiente de banco de dados da tabela.

Valores do código de retorno

Nenhum.

Conjunto de resultados

Nome da coluna Tipo de dados Descrição
TABLE_QUALIFIER sysname Nome do qualificador da tabela. Este campo pode ser NULL.
TABLE_OWNER sysname Nome do proprietário da tabela. Esse campo sempre retorna um valor.
TABLE_NAME sysname Nome da tabela. No SQL Server, esta coluna representa o nome de tabela como listado na tabela sysobjects. Esse campo sempre retorna um valor.
COLUMN_NAME sysname Nome da coluna, para cada coluna do TABLE_NAME retornado. No SQL Server, essa coluna representa o nome da coluna, conforme listado sys.columns na tabela. Esse campo sempre retorna um valor.
KEY_SEQ smallint Número de sequência da coluna em uma chave primária de várias colunas.
PK_NAME sysname Identificador da chave primária. Retorna NULL se não for aplicável à fonte de dados.

Comentários

sp_pkeys Retorna informações sobre colunas explicitamente definidas com uma PRIMARY KEY restrição. Como nem todos os sistemas oferecem suporte a chaves primárias explicitamente nomeadas, o implementador de gateway determina o que constitui uma chave primária. O termo chave primária refere-se a uma chave primária lógica para uma tabela. Espera-se que cada chave listada como sendo uma chave primária lógica tenha um índice exclusivo definido nela. Esse índice exclusivo também é retornado em sp_statistics.

O sp_pkeys procedimento armazenado é equivalente ao SQLPrimaryKeys ODBC. Os resultados são ordenados por TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME, e KEY_SEQ.

Permissões

Requer a permissão SELECT no esquema.

Exemplos

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

O exemplo a seguir recupera a chaves primária para a tabela HumanResources.Department no banco de dados AdventureWorks2022.

USE AdventureWorks2022;
GO

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

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

O exemplo a seguir recupera a chaves primária para a tabela DimAccount no banco de dados AdventureWorksPDW2012. Ele retorna zero linhas, indicando que a tabela não tem uma chave primária.

-- Uses AdventureWorksPDW

EXEC sp_pkeys @table_name = N'DimAccount';