我想授予 SQL 角色创建临时表 #foo 的权限并授予对该表执行任何操作的权限(SELECT、INSERT 和 DELETE)。如果没有创建表#foo 怎么可能(属于该角色的用户将创建和管理它)?
谢谢
注意:如果可能,该解决方案应该适用于 SQL 2008 和 SQL Azure。
我想授予 SQL 角色创建临时表 #foo 的权限并授予对该表执行任何操作的权限(SELECT、INSERT 和 DELETE)。如果没有创建表#foo 怎么可能(属于该角色的用户将创建和管理它)?
谢谢
注意:如果可能,该解决方案应该适用于 SQL 2008 和 SQL Azure。
你不能:
当创建表的会话结束并且所有其他任务都停止引用它们时,将自动删除全局临时表。任务和表之间的关联仅在单个 Transact-SQL 语句的生命周期内维护。这意味着在创建会话结束时主动引用该表的最后一个 Transact-SQL 语句完成时将删除全局临时表。 链接文本
我不确定 Azure,但是...
如果您在 tempdb 中显式创建表,它会在会话中持续存在,但会在服务器重新启动时被清除。
create table tempdb..authors (au_id char(11))
如果您创建 ##TempTable 它是全局可见的,但它也以创建者的会话结束。
显然,创建的用户AUTHORIZATION dbo
一旦连接到数据库,就已经有权创建和管理临时表。只有当该用户需要访问数据库中的其他表时,才需要明确授予他权限。