sp_tables (Transact-SQL)

返回可在当前环境中查询的对象的列表。 也就是说,返回任何表或视图(不包括同义词对象)。

备注

若要确定同义词的基对象名称,请查询 sys.synonyms 目录视图。

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

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

语法

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

参数

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

  • [ @table_owner= ] 'owner'
    用于返回目录信息的表的所有者。 owner 的数据类型为 nvarchar(384),默认值为 NULL。 支持通配符模式匹配。 如果未指定所有者,则遵循基础 DBMS 的默认表可见性规则。

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

  • [ @table_qualifier= ] 'qualifier'
    表限定符的名称。 qualifier 的数据类型为 sysname,默认值为 NULL。 许多 DBMS 产品都支持表的三部分构成命名方式 (qualifier**.owner.**name)。 在 SQL Server 中,此列表示数据库名称。 在某些产品中,此列表示表所在的数据库环境的服务器名称。

  • [ , [ @table_type= ] "'type', 'type'" ]
    由逗号分隔的值列表,该列表提供有关所有指定的表类型的表的信息。 其中包括 TABLESYSTEMTABLEVIEW。 type 的数据类型为 varchar(100),默认值为 NULL。

    备注

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

  • [ @fUsePattern = ] 'fUsePattern'
    确定下划线 (_)、百分号 (%) 和方括号([ 或 ])是否解释为通配符。 有效值为 0(模式匹配为关闭状态)和 1(模式匹配为打开状态)。 fUsePattern 的数据类型为 bit,默认值为 1。

返回代码值

结果集

列名

数据类型

说明

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 顺序排列。

权限

需要对架构的 SELECT 权限。

示例

A.返回可在当前环境中查询的对象的列表

以下示例返回可在当前环境中查询的对象列表。

EXEC sp_tables ;

B.返回与指定架构中的表相关的信息

以下示例将返回有关属于 AdventureWorks2012 数据库中的 Person 架构的表的信息。

USE AdventureWorks2012;
GO
EXEC sp_tables 
   @table_name = '%',
   @table_owner = 'Person',
   @table_qualifier = 'AdventureWorks2012';

请参阅

参考

sys.synonyms (Transact-SQL)

系统存储过程 (Transact-SQL)