sql - sql查询权限被拒绝

标签 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"   

尽管我遇到了权限问题。所以我收到的错误是 -

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_PagePermissionA_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/

相关文章:

asp-classic - 如何在经典 ASP 中运行参数化 SQL 查询?它安全吗?

mysql - 何时在MySQL中使用单引号,双引号和反引号

推送通知的 Android checkSelfPermission

sql-server - 从存储过程经典asp返回一个值和一个结果集

shell - RHEL5 上的 .sh 脚本出现 "Permission denied"错误

permissions - 如何在Keycloak中授予某些用户部分用户管理权限?

经典 asp 页面中 DropDown 的 JavaScript 验证

mysql - SQL查询多对多JOIN中存在的多个关系

sql - 在 Postgres 中爬升父/子数据库关系

mysql - 用于用户私有(private)消息传递的基本数据库结构是什么样的?