2011-05-10 66 views
0

我已将2005数据库还原到新的2008 R2数据库服务器。我创建了一个名为“看门人”的新用户SQL Server 2008 R2用户不能使用系统过程

但是,此用户无权访问数据库中的存储过程列表。

在运行查询的报告程序运行以下步骤之前,报告应用程序...

exec [Timesheet]..sp_procedures_rowset N'mp_GetTimesheetToPrint',1,N'dbo'

当根据本不返回行把关用户运行。但是,当以sa运行时,它会返回该过程。

什么是我需要给门卫这个程序正常工作的最低权限。它似乎是所有系统对象的问题,它们都不能运行或给出权限错误,它们只返回结果或结果的子集。

真的很挣扎着。在此先感谢

问候

菲尔

+0

那么'gatekeeper'用户对'mp_GetTimesheetToPrint'具有'exec'权限? – 2011-05-10 12:49:40

+0

查看下面的评论 – NoseBagUK 2011-05-10 14:36:13

回答

1

我诚实一点通过你的描述相混淆,所以请让我知道如果我是关闭基地在这里。你可以试试下面。它将授予对所有存储过程的执行访问权限。如果您只需要看门人访问一个存储过程,那么只需在该存储过程上授予执行权限即可。如果存储过程正在访问其他数据库中的数据,则可能需要授予对这些表的权限,并且它正在访问其数据库外部。

CREATE ROLE db_executor 
GRANT EXECUTE TO db_executor 
EXEC sp_addrolemember 'db_executor', 'gatekeeper' 
+0

嗨,谢谢你回到我身边。有点进一步的解释..这是一个水晶报告,网守有mp_GetTimesheetToPrint执行权限,它可以很好地运行它,似乎正在发生的事情,当我运行一个跟踪,是水晶之前它运行的报告程序尝试获取有关sp的元信息。它运行'sp_procedures_rowset',但此过程在作为网闸运行时不返回任何行,但在以sa身份运行时不会返回行。 – NoseBagUK 2011-05-10 14:08:08

+0

如果我将门卫作为securityadmin角色,那么它可以正常工作,但我并不真的想这样做。 – NoseBagUK 2011-05-10 14:13:52