使用CTE运行存储过程的安全性

时间:2015-07-27 10:50:02

标签: sql-server sql-server-2008

我有一个存储过程android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" android:inputType="text" ,它使用CTE并返回它。

MyStoredProcedure

我对安全性有一个相当固定的要求。有一个固定用户create procedure MyStoredProcedure as WITH mytemptable(foo) AS ( SELECT bar FROM mytable ) SELECT foo FROM mytemptable 我可以授予MyUser个角色,并且我已授予MyRole MyRole执行权限。

但后来我收到了错误:

  

在数据库' MyDatabase'。

中拒绝了CREATE TABLE权限

问题:

  1. 我是否正确地认为这是因为CTE创建了一个表?
  2. 如何尽可能少地访问MyRole以创建CTE,但不能改变一切?
  3. 注意:

    我无法搜索答案,因此请随时编辑或发布正确的字词,以帮助搜索人员获得更多帮助。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是一个有用的答案,但我忽略了一个

SELECT * INTO MyTable2

由于MyTable2始终存在,我不知道可能会生成一个创建