SQL查询拒绝权限

kur*_*_89 3 sql permissions asp-classic permission-denied

我试图通过经典的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"   
Run Code Online (Sandbox Code Playgroud)

虽然我遇到了权限问题.所以我收到的错误是 -

Microsoft OLE DB Provider for ODBC Drivers错误'80040e09'

[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]对象'A_Permission',数据库'HRWB_3_0',架构'dbo'上的SELECT权限被拒绝.

如何在不更改权限设置的情况下执行此查询.如何使用存储过程执行此操作?(有人也可以提供一个例子)

我无法更改我必须处理的数据库设置.我查看了很多网站文件,它似乎主要依赖于存储过程.

rsb*_*rro 5

除非您将L_PagePermissionA_Permission表的select访问权限授予用于连接到数据库的登录名,否则您将无法绕过该权限错误,或者除非您使用已具有select权限的其他登录名表.

另一种方法是编写新的存储过程并授予对该存储过程的EXECUTE访问权限.在任何一种情况下,授予权限的SQL都很简单:

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

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

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