Power BI Report Builder 本地打开 RDL 并连接 Azure SQL

| PowerPlatform | 3 Reads

背景

项目原本用 QuestPDF 在 Azure Functions 里直接生成 PDF。为了验证 Power BI Report Builder 是否能替代这部分报表输出,我们先做了两个本地 .rdl 文件:

  • [TaxCategoryExtensionCountReport.rdl](C:/Workspace_New/shori-jokyo-management-functions/shori-jokyo-management-functions/Features/Reports/TaxCategoryExtensionCount/TaxCategoryExtensionCountReport.rdl)
  • [TaxCategoryEstimatedExtensionCountReport.rdl](C:/Workspace_New/shori-jokyo-management-functions/shori-jokyo-management-functions/Features/Reports/TaxCategoryEstimatedExtensionCount/TaxCategoryEstimatedExtensionCountReport.rdl)

这两个 RDL 复用了项目现有 SQL,并保留了 StartDate / EndDate 两个参数。

遇到的问题

在 Power BI Report Builder 里配置数据源后,点击 Test Connection 时,立即弹出“Azure SQL の資格情報を入力してください”的凭据窗口。

这不是连接失败,而是 RDL 本身告诉 Report Builder:这个数据源需要运行时提示用户输入凭据。

原因是 RDL 的数据源配置里有这个节点:

<Prompt>Azure SQL の資格情報を入力してください</Prompt>

在 Report Builder/SSRS/RDL 语义里,Prompt 表示“运行或测试连接时提示用户输入数据源凭据”。所以即使连接串里写了 User ID / Password,Report Builder 仍然可能弹出凭据输入框。

修复方式

我把两个 RDL 里的 <Prompt> 节点删掉了。

修改前:

<ConnectionProperties>
  <DataProvider>SQL</DataProvider>
  <ConnectString>...</ConnectString>
  <Prompt>Azure SQL の資格情報を入力してください</Prompt>
</ConnectionProperties>

修改后:

<ConnectionProperties>
  <DataProvider>SQL</DataProvider>
  <ConnectString>...</ConnectString>
</ConnectionProperties>

这样 Report Builder 不会再因为 RDL 自身的 Prompt 配置强制弹出凭据窗口。

推荐的数据源配置

连接串里建议不要写密码,只写服务器和数据库:

Data Source=ika-sql-dev.database.windows.net,1433;Initial Catalog=free-sql-db-4988993;Encrypt=true;TrustServerCertificate=true;Connect Timeout=30

然后在 資格情報 / Credentials 页单独配置:

User name: sqladminuser
Password: local.settings.json 里的 SqlDatabase__Password

不要选择 Windows credentials。这里连接的是 Azure SQL,应该使用 SQL 用户名和密码。

注意事项

如果连接串里出现类似这种内容:

Password=xxxx;Test;Encrypt=true

Test 不是密码的一部分,就要删掉。连接串里的每一段都必须是 key=value 形式,单独的 Test; 会破坏连接串格式。

结果

修复后,RDL 文件仍然不保存真实密码,安全性更好;Report Builder 里可以手动配置凭据,然后点击 Test ConnectionRun 来查看带数据的报表。

This article was last edited at