我正在使用 Sql Server 2008 并且有一个在内部使用 sp_executesql 的过程。通过 ASP.NET 执行过程时,我不断收到以下错误:
对象“MyTable”、数据库“MyDatabase”、模式“dbo”的 SELECT 权限被拒绝。
我对此进行了大量研究,大多数人都指出我需要授予对我的动态查询读取的基础表的选择权限。好吧,我已经这样做了,但它似乎仍然不起作用:
select object_name(major_id) as object,
user_name(grantee_principal_id) as grantee,
user_name(grantor_principal_id) as grantor,
permission_name,
state_desc
from sys.database_permissions
where major_id = object_id('User') and
class = 1
结果: MyTable 公共 dbo SELECT GRANT MyTable 来宾 dbo SELECT GRANT MyTable myuser dbo SELECT GRANT MyTable NT AUTHORITY\NETWORK SERVICE dbo SELECT GRANT
如您所见,我在尝试授予基础表上的选择时已经过分了。我什至重写了我的过程,以便它只在动态 sql 中引用 MyTable。我什至已授予上述所有用户对进程的“执行”权限......不走运。
上面的“myuser”是我在 web.config 中的连接字符串中的用户名。
我在这里错过了什么吗?
谢谢!戴夫