代码之家  ›  专栏  ›  技术社区  ›  Martin Brown

SQL Sever TSQL脚本如何能够告诉您它拥有哪些安全权限?

  •  5
  • Martin Brown  · 技术社区  · 17 年前

    我有一个tsql脚本,用于在产品安装过程中设置数据库。它需要很多步骤,总共需要5分钟左右。有时,此脚本在最后一步失败,因为运行脚本的用户对数据库没有足够的权限。在这种情况下,我希望脚本能在海峡之外失败。为了做到这一点,我希望脚本预先测试它有哪些权限。如果脚本以特定的安全权限运行,是否有人能为我指出一种通用的测试方法?

    编辑: 在特定的情况下,我正在看它试图做一个备份,但我有其他事情出了问题,并希望得到一个通用的解决方案。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Martin Smith    14 年前
    select * from fn_my_permissions(NULL, 'SERVER') 
    

    这将为您提供当前会话在服务器上拥有的权限列表

    select * from fn_my_permissions(NULL, 'DATABASE')
    

    这将为您提供当前数据库上当前会话的权限列表。

    See here for more information .

        2
  •  0
  •   BradC    17 年前

    我假设它在长时间的选择之后在更新或插入时失败。

    试一试 简单的 在事务中更新或插入。硬编码行ID,或者任何使其简单快速的代码。

    不要提交事务——而是回滚它。

    如果您没有执行插入或更新的权限,则此操作将失败。如果你这样做,它将回滚,不会造成永久性的变化。

        3
  •  0
  •   Learning    17 年前

    尝试前面的最后一次插入/更新,使用一些where条件,例如

    insert/update
    where 1=2
    
    if (@@error <> 0)
       raise error 6666 'no permissions'
    

    这不会造成任何伤害,但会在缺乏权利的问题上引起轩然大波。