Sql sys.tables vs sp_tables

Sql sys.tables vs sp_tables,sql,sql-server,Sql,Sql Server,在执行以下查询时,我得到了不同的行计数: use MyDb select * from sys.tables where name like '%Abc%201502%' exec sp_tables '%Abc%201502%' 我不知道为什么 根据他们的说法,他们俩一定是一样的 sp_tables返回还包括视图的对象列表 依照 返回可在当前环境中查询的对象列表。这意味着任何表或视图,同义词对象除外 sys.tables仅返回表列表 依照 为SQL Server中的每个用户表返回一行

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

use MyDb

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

exec sp_tables '%Abc%201502%'
我不知道为什么


根据他们的说法,他们俩一定是一样的

sp_tables
返回还包括视图的对象列表

依照


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

sys.tables
仅返回表列表

依照

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


如果从
sp\u tables
的结果中查看列
TABLE\u TYPE
,您将看到对象的类型
TABLE/VIEW
sp_tables
中显示的任何视图都不会显示在
sys.tables中。tables
sp_tables
返回还包括视图的对象列表

依照


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

sys.tables
仅返回表列表

依照

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

如果从
sp\u tables
的结果中查看列
TABLE\u TYPE
,您将看到对象的类型
TABLE/VIEW
sp_tables
中显示的任何视图都不会显示在
sys.tables

sp_表


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

系统表

是系统视图,它为SQL Server中的每个用户表返回一行

sp_表


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

系统表

是系统视图,它为SQL Server中的每个用户表返回一行


sp_表?我能看看吗?你有
视图吗?根据ughai的回答,如果您有视图,那么结果可能会有所不同。sp_表?我能看看吗?你有
视图吗?根据ughai的回答,如果您有视图,那么结果可能会有所不同。在当前环境中可以查询的对象意味着具有当前用户的访问权限?是的,不管是什么表,视图可供该用户在任何特定数据库中查询。可在当前环境中查询的对象意味着具有当前用户的访问权限?是的,无论是什么表,视图可供该用户在任何特定数据库中查询。