sp_primarykeys (Transact-SQL)

适用范围:SQL Server

返回指定远程表的主键列,每个键列对应一行。

Transact-SQL 语法约定

语法

sp_primarykeys
    [ @table_server = ] N'table_server'
    [ , [ @table_name = ] N'table_name' ]
    [ , [ @table_schema = ] N'table_schema' ]
    [ , [ @table_catalog = ] N'table_catalog' ]
[ ; ]

参数

[ @table_server = ] N'table_server'

要从中返回主键信息的链接服务器的名称。 @table_server为 sysname,没有默认值。

[ @table_name = ] N'table_name'

要为其提供主键信息的表的名称。 @table_name为 sysname,默认值为 NULL.

[ @table_schema = ] N'table_schema'

表架构。 @table_schema为 sysname,默认值为 NULL. 在 SQL Server 环境中,此值对应于表所有者。

[ @table_catalog = ] N'table_catalog'

指定 @table_name 所在的目录的名称。 @table_catalog为 sysname,默认值为 NULL. 在 SQL Server 环境中,此值对应于数据库名称。

返回代码值

无。

结果集

列名称 数据类型 描述
TABLE_CAT sysname 表目录。
TABLE_SCHEM sysname 表架构。
TABLE_NAME sysname 表的名称。
COLUMN_NAME sysname 列的名称。
KEY_SEQ int 多列主键中列的序列号。
PK_NAME sysname 主键标识符。 如果不适用于数据源,则 NULL 返回。

注解

sp_primarykeys通过查询PRIMARY_KEYS对应于@table_server的 OLE DB 访问接口IDBSchemaRowset接口的行集来执行。 参数将传递给此接口以限制返回的行。

sp_primarykeys 如果指定的链接服务器的 OLE DB 提供程序不支持 PRIMARY_KEYS 接口的行集,则返回空结果集 IDBSchemaRowset

权限

需要对架构的 SELECT 权限。

示例

以下示例返回 AdventureWorks2022 数据库中 LONDON1 表的 HumanResources.JobCandidate 服务器中的主键列。

EXEC sp_primarykeys @table_server = N'LONDON1',
    @table_name = N'JobCandidate',
    @table_catalog = N'AdventureWorks2022',
    @table_schema = N'HumanResources';