sp_primarykeys (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';