3

我想授予 SQL 角色创建临时表 #foo 的权限并授予对该表执行任何操作的权限(SELECT、INSERT 和 DELETE)。如果没有创建表#foo 怎么可能(属于该角色的用户将创建和管理它)?

谢谢

注意:如果可能,该解决方案应该适用于 SQL 2008 和 SQL Azure。

4

3 回答 3

2

你不能:

当创建表的会话结束并且所有其他任务都停止引用它们时,将自动删除全局临时表。任务和表之间的关联仅在单个 Transact-SQL 语句的生命周期内维护。这意味着在创建会话结束时主动引用该表的最后一个 Transact-SQL 语句完成时将删除全局临时表。 链接文本

于 2011-01-18T20:37:09.773 回答
1

我不确定 Azure,但是...

如果您在 tempdb 中显式创建表,它会在会话中持续存在,但会在服务器重新启动时被清除。

create table tempdb..authors (au_id char(11))

如果您创建 ##TempTable 它是全局可见的,但它也以创建者的会话结束。

于 2011-01-18T20:43:04.327 回答
0

显然,创建的用户AUTHORIZATION dbo一旦连接到数据库,就已经有权创建和管理临时表。只有当该用户需要访问数据库中的其他表时,才需要明确授予他权限。

于 2011-01-21T01:34:31.560 回答