sys.tables vs sp_tables

时间:2015-04-15 08:55:26

标签: sql sql-server

我在执行以下查询时获得了不同的行数:

use MyDb

select * from sys.tables where name like  '%Abc%201502%'

exec sp_tables '%Abc%201502%'

我无法弄明白为什么。

根据this article,两者都必须相同!

2 个答案:

答案 0 :(得分:3)

  

<强> sp_tables
   是一个存储过程,它返回可以查询的对象列表       当前的环境。这意味着任何表或视图,同义词对象除外。

     

<强> sys.tables
  是系统视图,它为SQL Server中的每个用户表返回一行。

答案 1 :(得分:1)

sp_tables返回包含视图的对象列表

根据MSDN

  

返回可在当前环境中查询的对象列表。这意味着任何表或视图,同义词对象除外。

sys.tables仅返回表格列表

根据MSDN

  

为SQL Server中的每个用户表返回一行。

如果您从TABLE_TYPE的结果中查看专栏sp_tables,您会看到对象TABLE/ VIEW的类型。 sp_tables中显示的任何视图都不会显示在sys.tables