【问题标题】:SetDataSourceCredentials for ReportViewer works only for first page of reportReportViewer 的 SetDataSourceCredentials 仅适用于报告的第一页
【发布时间】:2015-02-15 22:08:49
【问题描述】:

我刚刚在报表服务器上部署了我的第一个 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)

有人有这个问题吗?如何解决?谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    的位置

    详细的错误信息是什么?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-12
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2018-03-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多