【问题标题】:Required permission to use tSQLt on SQL Server在 SQL Server 上使用 tSQLt 所需的权限
【发布时间】:2022-07-12 20:21:40
【问题描述】:

有没有其他方法可以在没有 sysadmin 角色或 ALTER TRACE 权限的情况下在 SQL Server 数据库上运行 tSQLt? 我们目前正在尝试使用 Redgate 的一个名为 SQLTest 的测试工具,它使用 tSQLt 框架。我们已经成功地将它安装在具有 sysadmin 角色的数据库上,但是除了具有 sysadmin 角色的人之外,没有人能够使用该工具。任何尝试过的人都会收到与权限相关的错误消息。 我一直在联系 Redgate 支持,他们告诉我的只是需要 sysadmin 角色或至少需要 ALTER TRACE 权限。这些是提升的权限,不应授予数据库上的所有用户。
任何帮助将不胜感激。

【问题讨论】:

    标签: permissions tsqlt


    【解决方案1】:

    目前尚不清楚您的用例到底是什么,但是...

    通常,开发人员会在本地沙箱上使用 SQLTest 和/或 tSQLt,例如SQL Server Developer Edition 安装在他们的笔记本电脑上。如果是这种情况,大多数组织应该没有问题,允许开发人员在他们自己的本地安装的 SQL Server 实例上成为系统管理员。

    如果您在共享 SQL Server 实例上使用它,那么这应该是一个 DEV 环境,希望 SQL 开发人员可以管理他们自己的开发环境。

    我无法想象任何组织允许开发人员在生产实例中进行 sysadmin 访问,但你真的不应该在生产中使用 tSQLt。

    【讨论】:

    • 这是一个 DEV 环境,但不幸的是,并非所有开发人员和测试人员都有管理员权限。这就是问题所在。
    【解决方案2】:

    我可能错了,但我相信运行 tSQLt 测试只需要 db_owner。可能取决于您正在测试的程序。我们几乎所有的测试都只是数据质量 AssertTableEmpty 测试。

    如果您拥有 Redgate Toolbelt(或特别是 SQL 比较),您应该能够即时创建个人开发数据库、进行更改、运行测试,然后 SQL 比较返回到共享开发数据库。

    【讨论】:

      【解决方案3】:

      这里有两件事在起作用。 tSQLt 要求执行主体有权更改数据库中的任何对象。通常,您可以通过使它们成为 db_owner 角色的一部分来实现这一点。

      Redgate SQLTest 需要(在某些情况下)额外的权限。比如执行SQLTest自带的代码覆盖工具需要ALTER TRACE权限。

      除上述之外,还有一个名为prepareserver.sql 的文件需要每个SQL SERVER(而不是每个数据库)执行一次。它需要系统管理员权限。

      因此,如果您不能像@datacentricity 推荐的那样使用专用环境,您可以直接执行 tSQLt 而不是使用 SQLTest,或者如果您想使用 SQLTest,请找出禁用哪些选项。

      和这里的其他人一样,我强烈建议您使用独立于 tSQLt 的专用环境进行开发。

      【讨论】:

        猜你喜欢
        • 2017-05-28
        • 1970-01-01
        • 2012-04-05
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        • 2018-04-30
        相关资源
        最近更新 更多