【问题标题】:How to GRANT permissions to a SQL role to create and manage temp tables如何授予 SQL 角色权限以创建和管理临时表
【发布时间】:2011-01-18 20:29:32
【问题描述】:

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

谢谢

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

【问题讨论】:

  • AFIK 所有登录都拥有create #temp 表的权限,然后对它们执行CRUD。

标签: sql tsql azure-sql-database


【解决方案1】:

你不能:

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

【讨论】:

    【解决方案2】:

    我不确定 Azure,但是 ...

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-19
        相关资源
        最近更新 更多