Transact-SQL 参考

sp_tables

返回当前环境下可查询的对象的列表(任何可出现在 FROM 子句中的对象)。

语法

sp_tables [ [ @table_name = ] 'name' ]
    [ , [ @table_owner = ] 'owner' ]
    [ , [ @table_qualifier = ] 'qualifier' ]
    [ , [ @table_type = ] "type" ]

参数

[@table_name =] 'name'

用来返回目录信息的表。name 的数据类型为 nvarchar(384),默认值为 NULL。支持通配符模式匹配。

[@table_owner =] 'owner'

用来返回目录信息的表的所有者。owner 的数据类型为 nvarchar(384),默认值为 NULL。支持通配符模式匹配。如果没有指定 owner,则采用基础 DBMS 默认的表可视性规则。

在 Microsoft® SQL Server™ 中,如果当前用户拥有的表具有指定名称,则返回该表的列。如果未指定所有者,且当前用户未拥有指定名称的表,则该过程查找由数据库所有者拥有的具有指定名称的表。如果有,则返回该表的列。

[@table_qualifier =] 'qualifier'

是表限定符的名称。qualifier 的数据类型为 sysname,默认设置为 NULL。多种 DBMS 产品支持表的三部分命名方式 (qualifier.owner.name)。在 SQL Server 中,该列表示数据库名。在某些产品中,该列表示表所在数据库环境的服务器名。

[,[@table_type =] "'type'"]

值的列表,由逗号分隔,它给出指定表类型的所有表的有关信息,包括 TABLESYSTEM TABLEVIEWtype 的数据类型为 varchar(100),默认值为 NULL。

说明  每个表类型都必须用单引号括起来,整个参数必须用双引号括起来。表类型必须大写。如果 SET QUOTED_IDENTIFIER 为 ON,那么每个单引号必须换成双引号,整个参数必须用单引号括起来。

返回代码值

结果集
列名 数据类型 描述
TABLE_QUALIFIER sysname 表限定符名称。在 SQL Server 中,该列表示数据库名。该字段可以为 NULL。
TABLE_OWNER sysname 表所有者名称。在 SQL Server 中,该列表示创建表的数据库用户的姓名。该字段始终返回值。
TABLE_NAME sysname 表名。该字段始终返回值。
TABLE_TYPE varchar(32) 表、系统表或视图。
REMARKS varchar(254) SQL Server 不为该列返回值。

注释

为达到最大互操作性,网关客户应假定只有 SQL-92 标准的 SQL 模式匹配(% 和 _ 通配符)。

并不总是检验有关当前用户对特定表的读写特权信息,因此不能确保访问。这个结果集不仅包含表和视图,还包含网关的同名和别名,这些网关通往支持这些类型的 DBMS 产品。如果在 sp_server_info 的结果集中,服务器特性 ACCESSIBLE_TABLES 是 Y,则只返回当前用户可访问的表。

sp_tables 与 ODBC 中的 SQLTables 等同。返回结果按 TABLE_TYPETABLE_QUALIFIERTABLE_OWNERTABLE_NAME 顺序排列。

权限

执行权限默认授予 public 角色。

示例
A. 返回可在当前环境中查询的对象的列表
EXEC sp_tables
B. 返回 Company 数据库中表 syscolumns 的有关信息
EXEC sp_tables syscolumns, dbo, Company, "'SYSTEM TABLE'"