如何在具有可信连接的 SQL Server 上模拟用户权限问题?

Posted

技术标签:

【中文标题】如何在具有可信连接的 SQL Server 上模拟用户权限问题?【英文标题】:How to simulate user rights problems on a SQL Server with trusted connection? 【发布时间】:2012-11-15 09:42:46 【问题描述】:

我开发了一个小型 C# 实用程序,用于执行数据验证、清理和导出。现在我正在为用户编写手册,我想模拟用户可能没有足够权限对特定表执行某些数据库操作(SELECT 或 UPDATE)的情况。

该实用程序非常小,仅通过使用与数据库的受信任连接来依赖当前用户的 Windows 凭据,这意味着它使用从 AD 传播的我的 Windows 帐户的凭据。我在数据库服务器上拥有完全权限,但我无法撤销自己的某些权限或将我的登录名映射到另一个权限较少的数据库用户,因为我的登录名已经映射到 dbo 并且我无法取消映射(错误消息如果我尝试,“dbo 用户不能被删除”)。

那么,如何模拟我的实用程序缺乏必要的权限?

【问题讨论】:

您是否从命令行尝试过 RunAs? 你不能在 SQL Server 中添加另一个用户并使其成为 dbo 吗? SQL - Impersonate SYSTEM_USER 的可能重复项 【参考方案1】:

您可以在测试中创建并抛出 SqlException 来模拟无权执行特定操作的情况。

您需要使用一些反射(检查 this 以获取帮助程序类)将正确的错误添加到异常的 Errors 属性中。

【讨论】:

以上是关于如何在具有可信连接的 SQL Server 上模拟用户权限问题?的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 和 SQL Server 连接(可信来源与传递登录凭据)

用户登录失败,该用户与可信SQL Server连接无关联,错误:18452

具有不同字符的 SQL Server 组连接

两个具有相同名称的SQL Server实例?

SQL Server UNION ALL 合并连接(连接)太慢

如何在单个进程中模拟 SQL Server 中的死锁?