gpt4 book ai didi

使用来自 SSRS 连接的模拟所需的 SQL 数据库权限

转载 作者:行者123 更新时间:2023-12-01 13:03:41 25 4
gpt4 key购买 nike

当我尝试使用“安全存储在服务器中的凭据”指定从 SSRS 到 SQL Server 数据库 (2008) 的数据源时,我目前遇到以下错误 - 这被指定为 Windows 帐户“s2\killian”选中“在建立连接后模拟经过身份验证的用户”选项。

消息 15157,级别 16,状态 1,第 1 行由于以下原因之一,Setuser 失败:数据库主体 's2\killian' 不存在,其对应的服务器主体没有服务器访问权限,无法模拟此类数据库主体,或者您没有权限。

显然,这种模拟方法在幕后使用了 SetUser() 函数,MSDN 文档指出需要 dbowner 权限才能使用此函数。但是,在使用 dbowner 时出现上述错误。由于安全策略,我无法使用 sysadmin。

有谁知道如何在不将 SQL Server 数据库上的系统管理员权限分配给 SSRS 数据源使用的 Windows 帐户的情况下使这种身份验证和模拟机制正常工作。

有没有办法让 SetUser() 在没有系统管理员权限的情况下工作?

谢谢基利安

最佳答案

线索是“数据库主体's2\killian'不存在”

任何连接在数据库端使用上下文更改(例如 SETUSEREXECUTE AS 等)需要模拟用户存在于 sys.server_principals 和/或 sys.database_principals .

假设您使用的是 AD 组,而不是个人登录,那么这将导致与上述相同的错误。在任何权限之外。如果您是 db_owner,那么您可以在数据库级别进行模拟。如果不能,那是因为上一段。

我一直认为这对 SSRS 来说是一个愚蠢的选择。 MSDN says it uses SETUSER这也被弃用了。理想情况下,您将模拟 before 连接,这对于 asp.net 应用程序是可能的,但不知道 SSRS(当然是 asp.net 应用程序)

很抱歉缺少“这样做并且有效”的答案...

关于使用来自 SSRS 连接的模拟所需的 SQL 数据库权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com