ReportViewer的SetDataSourceCredentials仅适用于报表的第一页

时间:2014-12-17 11:10:22

标签: reporting-services ssrs-2008 reportviewer credentials reportserver

我刚刚在Report Server上部署了我的第一个SSRS报告,并使用ReportViewer从应用程序调用它(必须使用它)。问题是,在执行报告之前总是要求数据库用户名和密码。无论我在哪里设置数据库凭据(在报表服务器上,在报表中),它总是要求我们。 所以我尝试以编程方式设置数据源凭据:

                    DataSourceCredentials cred = new DataSourceCredentials();
                    ReportDataSourceInfoCollection dataSource = ReportViewer1.ServerReport.GetDataSources();
                    cred.Name = dataSource.First().Name;
                    cred.UserId = "sa";
                    cred.Password = "admin_pass";
                    ReportViewer1.ServerReport.SetDataSourceCredentials(new DataSourceCredentials[] { cred });
                    ReportViewer1.ServerReport.Refresh();

报告的第一页加载就好了。不幸的是,第二页再次要求提供凭据,如果我不再次输入凭据,则报表查看器会显示错误,例如dataSource不存在:

无法创建与数据源' DataSource2'的连接。 (rsErrorOpeningConnection)

有没有人有这个问题?怎么解决?谢谢!

3 个答案:

答案 0 :(得分:0)

首先,项目中是否有一个名为DataSource2的数据源?我遇到过一种情况,因为某些原因,Visual Studio报表设计器自动创建了一个我不知道的额外数据源(但在Shared Data Sources文件夹下不可见)。

因此,您需要在Visual Studio中右键单击报表,然后单击View Code以验证数据源。在我的情况下,我所要做的就是删除对不存在的数据源的任何引用,一切都按预期工作。

否则,请查看SSRS日志以获取更详细的错误消息。日志应位于类似于C:\Program Files\Microsoft SQL Server\MSRS11.SQLPROD1\Reporting Services\LogFiles

的位置

详细的错误消息是什么?

答案 1 :(得分:0)

您的数据源可能配置为提示输入凭据。我认为您应该在报告中指定特定的用户名和密码。见下面的截图:

enter image description here

答案 2 :(得分:0)

您何时设置凭据?确保将其作为ReportLoadedEventHandler添加到ReportLoaded。