gpt4 book ai didi

azure - 如何使用 Azure Reporting Services (SSRS) 动态指定数据库凭据

转载 作者:行者123 更新时间:2023-12-02 04:59:29 25 4
gpt4 key购买 nike

摘要

我正在 Azure 上使用 SQL Server Reporting Services。我想在运行时动态指定连接字符串包括凭据。我通过在 ASPX 页面中嵌入 ReportViewer 控件来运行报告。

只要我在 SSRS 上指定一个执行帐户,我就可以使用 SSRS 2012 在本地进行这项工作。但是,在 Azure Reporting Services 上,我无法指定执行帐户,因此它不起作用。

我的问题是 - 如何在 Azure 上实现此功能?具体来说,当使用 Azure Reporting Services 而不是本地部署时,如何在运行时指定数据库连接字符串包括凭据

详细信息

当您在本地执行此操作时,以下是关键步骤;

  • 将您的报告设置为使用嵌入式连接。
  • 定义一个参数,例如“ConnectionString”
  • 在嵌入式数据源中,将连接字符串设置为“[@ConnectionString]”(您也可以使用表达式生成器从不同的参数构造连接字符串,但差异相同)。
  • 在嵌入式数据源中,将“凭据”设置为“不使用凭据”。
  • 确保您已在 SSRS 上指定执行帐户
  • 在您的 ASPX 页面中,执行类似 this.ReportViewer1.ServerReport.SetParameters(new ReportParameter("ConnectionString", connectionString, false));
  • 的操作

在 Azure 上的 SSRS 上,您无法指定执行帐户,因此上述方法不起作用。

本质上,如果您尝试设置“不使用凭据”并且您没有指定执行帐户,您将收到此错误:

The current action cannot be completed. The user data source credentials do not meet the requirements. Either the user data source credentials are not stored in the report server database, or the user data source is configured not to require credentials but the unattended execution account is not specified. Tracing ID is: XXX. Machine name is XXX. (rsInvalidDataSourceCredentialSetting)

我尝试过的

到目前为止,我已经尝试了很多不同的事情,包括在嵌入式数据源中指定虚拟凭据。在 Azure 上实现此操作的唯一方法是直接在嵌入式数据源中指定有效的数据库凭据。我还看到了一些有关尝试使用“SQL Server”类型连接字符串而不是“Azure SQL”的建议,但它似乎在本地没有任何不同,并且无论如何,我无法部署到 Azure,除非我将其设置为 Azure SQL。我也尝试过 this.ReportViewer1.ServerReport.SetDataSourceCredentials ,但这似乎也没有帮助;单步执行代码时,我第一次尝试与报表通信时收到错误,即使该通信是尝试设置凭据的调用。

我觉得最令人沮丧的是,这似乎是一种完全不合逻辑的依赖;您在嵌入数据源中指定的数据库凭据不能用于实际运行报表(因为它们只是 SQL 凭据),并且执行帐户是无法访问数据库的 Windows 帐户。因此,它看起来像是一种完全任意的依赖关系,没有任何实际原因。

最佳答案

如果您能够在服务器上创建通用“ReportUser”Windows 帐户并授予此帐户查看者访问您报告的权限,则可以使用此解决方案。

您可以通过向报告中添加两个参数来解决此问题。1.@DatabaseServerName2.@数据库名称

然后在报表数据源中将连接表达式设置为:

="Data Source="+Parameters!DatabaseServerName.Value+";Initial Catalog="&Parameters!DatabaseName.Value

开发报告时,您应该向报告添加一个指向有效开发端点的 TEST 数据源,然后在部署到生产服务器之前使用上面的表达式将所有数据集设置为指向数据源。

为了使其正常工作,您需要在生产服务器上创建一个“ReportUser”帐户,并将动态数据源的凭据设置为该帐户的用户名和密码。

关于azure - 如何使用 Azure Reporting Services (SSRS) 动态指定数据库凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146342/

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