我有一个数据库,其中所有访问都由存储过程控制。 DBA希望避免给用户直接读/写访问基础表,我可以理解。因此,所有更新和选择数据都是通过存储过程完成的。基本上他创建了一个角色,对数据库中的所有存储过程具有EXECUTE权限,并为用户提供角色。使用“执行sp_Executesql”时的权限
问题是存储过程之一动态构建SQl查询并通过“执行sp_Executesql”执行它。没有深入细节,查询是动态构建的,因为它根据许多用户输入参数而显着变化。有问题的存储过程只是一个SELECT sql语句,但是我发现只给予存储过程EXECUTE权限是不够的。存储过程中引用的使用“Execute sp_Executesql”的基础表需要被赋予“datareader”访问权限,否则存储过程将失败。
有关如何解决此问题的任何想法?我真的想限制对表格的访问,但仅限于存储过程,但我需要找到一种解决使用“Execute sp_Executesq”l的存储过程的方法。谢谢。
您可能会得到更好的avdice serverfault。我的建议 - 与dba交谈并解释情况。与他们合作以获得正确的权限。 – 2010-09-28 19:58:16