我有一个存储过程,我们在这里称之为Test
。
为简单起见,我将SP代码修改为:
Select * from table A
我可以毫无问题地运行此SP。
现在,如果我使用动态SQL
@SQL='Select * from table A'
EXECUTE (@SQL)
I get
The SELECT permission was denied on the object 'A', database 'MyDb', schema 'dbo'.
这里有什么不同?
答案 0 :(得分:4)
动态SQL具有此限制/限制。在存储过程中使用动态sql时,即使调用用户对存储过程具有权限,用户也需要对动态sql中调用的表/对象的权限。
您有两个选择
答案 1 :(得分:0)
当用户没有足够的权限时会出现此错误 访问数据库中的表。授予权限 用户为了得到你想要的东西。
Grant Select statement(or any other if you want)
的权限。