我正在尝试通过经典的 asp 记录集执行以下查询 -
SQL = "Select P_Name as P_Name, P_Description as P_Description
from L_PagePermission
inner join A_Permission on p_permissionID = pp_PermissionID
inner join A_Page on P_PageID = PP_PageID
where P_PageID = 85
order by p_Name"
尽管我遇到了权限问题。所以我收到的错误是 -
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[Microsoft][ODBC SQL Server Driver][SQL Server]SELECT permission denied on object 'A_Permission', database 'HRWB_3_0', schema 'dbo'.
我将如何在不更改权限设置的情况下执行此查询。如何使用存储过程执行此操作? (谁也可以举个例子)
我无法更改我必须处理的数据库设置。我浏览了很多网站文件,它似乎主要依赖于存储过程。
最佳答案
除非您将 L_PagePermission
和 A_Permission
表的选择访问权限授予您正在使用的登录名,否则您将无法解决该权限错误连接到数据库,或者除非您使用已经对这些表具有选择访问权限的不同登录名。
另一种方法是编写一个新的存储过程并授予对该存储过程的 EXECUTE 访问权限。在这两种情况下授予权限的 SQL 都很简单:
授予对表的 SELECT 访问权限:
GRANT SELECT ON [TableName] TO [loginName]
授予对存储过程的 EXECUTE 访问权限:
GRANT EXECUTE ON [procedureName] TO [loginName]
另一种可行但具有明显安全隐患的方法是将您正在使用的登录名添加到该数据库的 db_owner 角色。这应该可行,但不建议这样做,除非您对出现的安全风险感到满意。
关于sql - sql查询权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6488523/