SQL查询权限被拒绝。

3
我将尝试通过经典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'.

我怎样才能在不改变权限设置的情况下执行这个查询呢?如何使用存储过程来实现?(可以提供一个例子吗)

我不能更改数据库设置,我必须处理我得到的内容。我已经查看了很多网站文件,似乎大部分依赖于存储过程。

2个回答

5
除非您授予连接数据库的登录名对 L_PagePermissionA_Permission 表的选择访问权限,否则无法避免权限错误。或者您可以使用已经具有这些表的选择访问权限的不同登录名。另一种方法是编写一个新的存储过程并授予该存储过程的EXECUTE访问权限。在任一情况下授予权限的SQL语句很简单:
授予表的SELECT访问权限: GRANT SELECT ON [TableName] TO [loginName] 授予存储过程的EXECUTE访问权限: GRANT EXECUTE ON [procedureName] TO [loginName] 还有一种方法是将您正在使用的登录名添加到该数据库的db_owner角色中,但这样做存在明显的安全风险,除非您熟悉其带来的安全风险,否则不建议这样做。

0
如果您没有从表中选择的权限,除了作为具有从表中选择权限的用户连接到 DBMS 之外,没有其他方法可以绕过权限的缺失。这就是权限系统的目的-防止未经授权的人做他们不允许做的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接