sp_primarykeys (Transact-SQL)

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

主题链接图标Transact-SQL 语法约定

语法

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

参数

  • [ @table_server = ] **'**table_server'
    表示从中返回主键信息的链接服务器名称。table_server 的数据类型为 sysname,没有默认值。

  • [ @table_name = ] 'table_name'
    表示提供其主键信息的表名。table_name的数据类型为 sysname,默认值为 NULL。

  • [ @table_schema = ] 'table_schema'
    表架构。table_schema 的数据类型为 sysname,默认值为 NULL。在 SQL Server 2008 环境中,该值对应于表所有者。

  • [ @table_catalog = ] 'table_catalog'
    表示指定的 table_name 所驻留的目录名称。在 SQL Server 环境中,该值对应于数据库名称。table_catalog 的数据类型为 sysname,默认值为 NULL。

返回代码值

结果集

列名

数据类型

说明

TABLE_CAT

sysname

表目录。

TABLE_SCHEM

sysname

表架构。

TABLE_NAME

sysname

表的名称。

COLUMN_NAME

sysname

列名。

KEY_SEQ

int

多列主键中列的序列号。

PK_NAME

sysname

主键标识符。如果对数据源不适用,则返回 NULL。

注释

sp_primarykeys 是通过查询 table_server 所对应的 OLE DB 访问接口的 IDBSchemaRowset 接口的 PRIMARY_KEYS 行集来执行的。table_name、table_schema、table_catalog 和 column 等参数传递到该接口以限制返回的行。

如果指定链接服务器的 OLE DB 访问接口不支持 IDBSchemaRowset 接口的 PRIMARY_KEYS 行集,sp_primarykeys 将返回空结果集。

权限

需要对架构的 SELECT 权限。

示例

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

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