一尘不染

sql查询权限被拒绝

sql

我正在尝试通过经典的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提供程序的ODBC驱动程序错误‘80040e09’

[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]对对象“ A_Permission”,数据库“
HRWB_3_0”,架构“ dbo”的选择权限被拒绝。

在不更改权限设置的情况下如何执行此查询。如何使用存储过程做到这一点?(有人也可以提供示例)

我无法更改必须处理的数据库设置。我浏览了很多网站文件,它似乎主要取决于存储过程。


阅读 130

收藏
2021-03-08

共1个答案

一尘不染

除非您在L_PagePermissionA_Permission表上授予用于连接数据库的登录名的选择访问权限,或者除非您已使用对这些数据库具有选择访问权限的其他登录名,否则您将无法解决该权限错误。桌子。

另一种方法是编写一个新的存储过程,并授予对该存储过程的EXECUTE访问权限。无论哪种情况,授予权限的SQL都很简单:

授予对表的SELECT访问权限: GRANT SELECT ON [TableName] TO [loginName]

授予对存储过程的EXECUTE访问权限: GRANT EXECUTE ON [procedureName] TO [loginName]

可能可行但又具有明显安全隐患的另一种方法是,将您正在使用的登录名添加到该数据库的db_owner角色中。这应该可行,但是除非您对存在的安全风险感到满意,否则不建议这样做。

2021-03-08