代码之家  ›  专栏  ›  技术社区  ›  adrianbanks

是否有工具可以检查一组sql所需的最低权限?

  •  4
  • adrianbanks  · 技术社区  · 16 年前

    如果我有一组SQL(即一个包含任意SQL语句的脚本),有没有办法找出执行SQL所需的最低权限?

    (在查看WinForms应用程序的“项目属性”页上的“安全性”选项卡时,我正在考虑类似于Visual Studio中“应用程序所需的权限”区域的内容。)

    一点背景:

    作为应用程序的一部分,我有一组升级脚本(可以更改表中的数据,也可以更改模式),它们将在最后针对客户的数据库运行。在部署这些升级脚本之前,我想分析它们是否存在任何潜在的权限问题,因为运行它们的客户可能登录到SQL Server受到限制。这些脚本中发生的事情通常是添加/删除/更改表/列/索引,但我也确实从信息模式视图和系统表中进行了选择。

    编辑:

    当用户没有正确的权限进行升级时,我有适当的错误处理来应对这些情况。我正在检查运行升级的用户是否 db_owner ,但我更关心的是正在升级的数据库之外的内容。例如,脚本经常使用系统表来获取有关数据库架构的信息,以决定是否执行特定操作—我想知道访问这些表需要哪些权限。另一个例子是打开页面压缩-用户是否需要特定的权限来执行此操作?

    我想在部署升级脚本之前对它们进行检查,因为事先知道您需要某些权限比升级失败并出现错误要好得多的用户体验。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Sam    16 年前

    我不认为这样的命令存在。

    我建议将升级帐户设置为db_owner并让他们运行脚本。保持简单。或者为此目的在数据库中发布一个角色。

    也许您可以创建一个“预执行”阶段,尝试执行一些命令,然后将它们回滚。如果您没有访问权限,它会抛出一些错误。不过,这是一个很大的问题。

        2
  •  0
  •   brenbart    14 年前

    我也在想同样的事情。如果SQL profiler中有一些选项允许您跟踪使用了哪些权限,那将是非常好的。这样,您只需授予登录系统管理员,然后让用户/应用程序在其空间中运行,并删除所有未使用的权限。

    那。。。如果您执行了探查器跟踪并将其保存为SQL脚本,则可以通过跟踪中的每个语句来确定所需的权限?

    作为一个副产品,您最终会得到一个方便的脚本,该脚本(理论上)将作为所有可用于监视应用程序状态的函数的测试。

    推荐文章