Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Reporting services 报表管理器数据源的数据库角色成员身份设置_Reporting Services_Ssrs 2008_Ssms_Sql Server 2008_Reportmanager - Fatal编程技术网

Reporting services 报表管理器数据源的数据库角色成员身份设置

Reporting services 报表管理器数据源的数据库角色成员身份设置,reporting-services,ssrs-2008,ssms,sql-server-2008,reportmanager,Reporting Services,Ssrs 2008,Ssms,Sql Server 2008,Reportmanager,我正在SQLServer2008R2上开发SQLServerReportingServices(SSRS)报表,并使用报表管理器作为演示和测试报表的方法。我正在寻找一种方法,允许同一域的用户连接到报表管理器,并通过浏览器(而不是SharePoint)运行报表,而不让用户对数据源有太多访问权限。我目前将每个用户列为数据集和数据源关联的数据库的db_所有者。我想限制此访问,并尝试了db_datareader,但此级别不允许用户运行报告,并向用户提供以下错误:“无法创建到数据源“DBname”的连接。

我正在SQLServer2008R2上开发SQLServerReportingServices(SSRS)报表,并使用报表管理器作为演示和测试报表的方法。我正在寻找一种方法,允许同一域的用户连接到报表管理器,并通过浏览器(而不是SharePoint)运行报表,而不让用户对数据源有太多访问权限。我目前将每个用户列为数据集和数据源关联的数据库的db_所有者。我想限制此访问,并尝试了db_datareader,但此级别不允许用户运行报告,并向用户提供以下错误:“无法创建到数据源“DBname”的连接。(RSErrorRoppingConnection)”

将用户添加到报表管理器站点的方法:我选择“站点设置”下的“安全”选项卡,然后选择“新角色分配”,将用户添加为“系统用户”。然后,我在工具栏上选择“文件夹设置”,然后再次选择“新角色分配”,将用户添加为“浏览器”。我曾尝试将用户添加为“内容管理器”,但在涉及数据源时,他们仍然存在相同的错误

我将用户添加到数据源的方法:从服务器的“安全”选项卡中选择“新建登录名”,将“域\用户名”添加到“登录名:”,使用Windows身份验证,并将默认数据库从master更改为作为报表数据源的数据库。然后选择“用户映射”,并在作为数据源的数据库旁边打勾。在“数据库角色成员身份:DBname”部分中,我选择了db_owner,并且已经选择了public。我在下面附上了截图。 我的问题是,对于SSR和报表管理器,我可以使用什么样的“数据库角色成员身份”,它们不会像db_所有者那样广泛,并且具有最好的安全性?我尝试了db_datareader,但用户在运行报告时无法连接到数据源

我已经研究了这个问题,但我没有发现任何细节可以接受添加用户作为db_所有者,正如我所描述的。MSDN的作用就像报表管理器中的设置是用户/报表访问数据源所需的全部设置一样。我曾尝试将报表管理器设置与数据源的两种设置一起使用,共享和嵌入,但没有成功


提前感谢

通常,SSRS中的数据源将设置为使用固定帐户,即Windows帐户或SQL身份验证。应为该帐户授予数据库的最低权限:db_datareader是常见的

然后,如上面所述,通过报表管理器控制报表的安全性。这样就避免了在更改用户权限时需要更改数据库本身的安全性

但您上面描述的方法也应该有效。如果您的查询是从表中选择的标准SQL查询,那么当用户具有db_datareader访问权限时看到的错误令人惊讶。如果您使用的是存储过程,则还需要授予对这些存储过程的访问权限。使用设置为db_datareader的测试用户帐户;查看是否可以通过SQLServerManagementStudio连接并执行查询

根据您的安全要求,我将使用一个专用帐户来访问报告中的数据库,比如“ReportReader”。以该用户的身份开发和测试访问数据库的报告,并确保该用户具有最小访问权限、只读和/或仅限于他们需要执行的表或过程

用于访问数据库的凭据在数据源的属性中设置。这是经常使用共享数据源的原因之一,并且报告链接到共享数据源:


屏幕截图显示正在使用的SQL server身份验证帐户。这可以很容易地成为一个固定的Active Directory帐户;在这种情况下,请选中“当…”时用作Windows凭据。

如何使SQL Server DB上的报表管理器能够使用专用帐户?我对每个报表都有存储过程,根据您的信息,我已将数据源的用户访问级别从db_owner更改为db_executor,但这仍然为用户提供了太多的访问权限,更不用说将每个用户添加到数据源的麻烦了。使用数据源详细信息编辑。您的信息很棒,但我仍然很满意有困难的。最值得注意的是让ReportReader用户通过测试连接。我通过SQL Server Management Studio添加用户所遵循的步骤是:在安全性下,我创建一个新登录名,输入名称,选择SQL Server身份验证,然后输入一个与报表管理器匹配的简单密码,将默认数据库设为master或datasourceDB(尝试两者)。在用户映射:我将用户映射到datasourceDB、ReportDB和ReportDBTemp下,我尝试了db_datareader、db_owner和db_executor的不同组合。我不知道怎么了,我也有同样的问题。无论我做什么,只要不让用户
db_owner
在添加SSRS数据源时无法通过测试连接。我不太喜欢“测试连接”按钮。我见过一些失败的案例,但是数据源是好的。我认为更好的测试是使用SSMS并作为该用户登录,如果使用SQL Server身份验证的话。