Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用来自SSRS连接的模拟所需的SQL数据库权限_Sql_Sql Server_Ssrs 2008 - Fatal编程技术网

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

使用来自SSRS连接的模拟所需的SQL数据库权限,sql,sql-server,ssrs-2008,Sql,Sql Server,Ssrs 2008,当我尝试使用“安全存储在服务器中的凭据”指定从SSRS到SQL Server db(2008)的数据源时,当前遇到以下错误-这被指定为windows帐户“s2\killian”,并选中“在建立连接后模拟经过身份验证的用户”选项 Msg 15157,16级,状态1,第1行 由于以下原因之一,Setuser失败:数据库主体“s2\killian”不存在,其对应的服务器主体没有服务器访问权限,无法模拟此类型的数据库主体,或者您没有权限 显然,这种模拟方法在幕后使用SetUser()函数,MSDN文档说

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

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

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

有人知道如何在不将SQL Server数据库上的sysadmin权限分配给SSRS数据源所使用的windows帐户的情况下使此身份验证和模拟机制工作吗

有没有办法让SetUser()在没有sysadmin权限的情况下工作

谢谢 Killian

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

任何连接在数据库端使用上下文更改(例如
SETUSER
executeas
等)都要求模拟用户存在于sys.server\u主体和/或sys.database\u主体中

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

我一直认为对于SSR来说,这是一个愚蠢的选择。这也是不赞成的。理想情况下,您应该在连接之前进行模拟,这对于asp.net应用程序是可能的,但对于SSRS(当然是asp.net应用程序)则不知道


很抱歉,没有“执行此操作并正常工作”回答…

我已经能够确认,您必须具有系统管理员权限才能运行SETUSER函数,当选择“连接后模拟已验证用户”选项时,这似乎是SQL reporting services利用的机制


MSDN的文档中提到了这一点,但听起来似乎也可以作为db_所有者运行此功能,但我没有让reporting services与只有db_所有者的帐户一起工作,我甚至无法在只有db_所有者的帐户下手动运行setuser。我让它工作的唯一方法是使用sysadmin权限。

很抱歉,我很慢才回来,感谢您的信息,但是我无法在没有sysadmin的情况下让它工作,即使用sys.server\u principals/sys.database\u principals中的dbowner和个人成员身份。我同意奇怪的是,SSRS没有使用EXECUTE而不是不推荐的SetUser。只是为了更新-如果没有在数据库级别设置帐户,我可以使用dbowner使其工作,即在服务器级别添加登录,并在此级别分配db角色!实际上,我收回了前面的评论——没有sa是不行的。