Sql server 2008 查询根据用户返回不同的结果

Sql server 2008 查询根据用户返回不同的结果,sql-server-2008,tsql,Sql Server 2008,Tsql,我有一个存储过程,它根据执行它的用户返回不同的结果。我的意图是让它返回相同的结果。我自己的用户得到了预期的结果(很多行),但是应用程序的服务帐户得到了一个空的结果集(并且没有错误) 如果查询在SSMS中单独执行,也会发生同样的情况 我应该看什么?这是sys.objects的一些特殊之处。要查看sys.objects中的行,您必须对该行表示的对象具有权限。很好地解释了这一点。我猜您的权限不匹配。什么样的权限控制您看到的行?我对权限的理解是,如果权限不足,我会收到一条错误消息,但这只是更少的行。服务

我有一个存储过程,它根据执行它的用户返回不同的结果。我的意图是让它返回相同的结果。我自己的用户得到了预期的结果(很多行),但是应用程序的服务帐户得到了一个空的结果集(并且没有错误)

如果查询在SSMS中单独执行,也会发生同样的情况


我应该看什么?

这是sys.objects的一些特殊之处。要查看sys.objects中的行,您必须对该行表示的对象具有权限。很好地解释了这一点。

我猜您的权限不匹配。什么样的权限控制您看到的行?我对权限的理解是,如果权限不足,我会收到一条错误消息,但这只是更少的行。服务帐户可以执行存储的过程,因此不需要对所用表的权限:。是否有人要解释为什么为-1?
create procedure mal.get_geospatial_levels
as

set nocount on

select
    level_name = c.name
from sys.objects o
    inner join sys.columns c
        on c.object_id = o.object_id
where o.name like 'mb%'
    and c.name like '%[_]v%[_][0-9]%'
    and c.name not like 'mb%'
    and c.name not like 'admin%'
    and c.name not like '%[_]name'
    and c.name not in ('AREA_SQ_KM', 'OBJECTID', 'Shape')
group by c.name
order by c.name