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