sp_indexes (Transact-SQL)
返回指定的远程表的索引信息。
语法
sp_indexes [ @table_server = ] 'table_server'
[ , [@table_name = ] 'table_name' ]
[ , [ @table_schema = ] 'table_schema' ]
[ , [ @table_catalog = ] 'table_db' ]
[ , [ @index_name = ] 'index_name' ]
[ , [ @is_unique = ] 'is_unique' ]
参数
[ @table_server = ] 'table_server'
要为其请求表信息的 SQL Server 链接服务器的名称。table_server 的数据类型为 sysname,无默认值。[ @table_name = ] 'table_name'
要为其提供索引信息的远程表的名称。table_name 的数据类型为 sysname,默认值为 NULL。如果为 NULL,则返回指定数据库中的所有表。[ @table_schema = ] 'table_schema'
指定表架构。在 SQL Server 环境中,此参数对应于表所有者。table_schema 的数据类型为 sysname,默认值为 NULL。[ @table_catalog = ] 'table_db'
table_name 所在数据库的名称。table_db 的数据类型为 sysname,默认值为 NULL。如果为 NULL,则 table_db 默认为 master。[ @index_name = ] 'index_name'
为其请求信息的索引的名称。index 的数据类型为 sysname,默认值为 NULL。[ @is_unique = ] 'is_unique'
要为其返回信息的索引的类型。is_unique 的数据类型为 bit,默认值为 NULL,可以是下列值之一。值
说明
1
返回有关唯一索引的信息。
0
返回有关非唯一索引的信息。
NULL
返回有关所有索引的信息。
结果集
列名 |
数据类型 |
说明 |
---|---|---|
TABLE_CAT |
sysname |
指定的表所在的数据库的名称。 |
TABLE_SCHEM |
sysname |
表的架构。 |
TABLE_NAME |
sysname |
远程表的名称。 |
NON_UNIQUE |
smallint |
指示索引是否唯一: 0 = 唯一 1 = 不唯一 |
INDEX_QUALIFER |
sysname |
索引所有者的名称。某些 DBMS 产品允许表所有者之外的用户创建索引。在 SQL Server 中,此列始终与 TABLE_NAME 相同。 |
INDEX_NAME |
sysname |
索引的名称。 |
TYPE |
smallint |
索引的类型: 0 = 表的统计信息 1 = 聚集 2 = 哈希 3 = 其他 |
ORDINAL_POSITION |
int |
列在索引中的序号位置。索引中的第一列为 1。此列始终会返回一个值。 |
COLUMN_NAME |
sysname |
返回的 TABLE_NAME 中每个列的对应列名。 |
ASC_OR_DESC |
varchar |
排序规则中使用的顺序: A = 升序 D = 降序 NULL = 不适用 SQL Server 始终返回 A。 |
CARDINALITY |
int |
表中的行数或索引中唯一值的数目。 |
PAGES |
int |
存储索引或表的页数。 |
FILTER_CONDITION |
nvarchar(4000) |
SQL Server 不返回值。 |
权限
需要对架构的 SELECT 权限。
示例
以下示例将返回 Seattle1 链接服务器上 AdventureWorks 数据库的 Employees 表的所有索引信息。
EXEC sp_indexes @table_server = 'Seattle1',
@table_name = 'Employee',
@table_schema = 'HumanResources',
@table_catalog = 'AdventureWorks'