交付 RDL 時不要刪除 DataSource:使用占位符保留完整結構

| PowerPlatform | 1 Reads

將 Power BI Paginated Report 的 RDL 檔案交付給其他環境時,推薦的做法不是刪除 DataSource,而是保留原本的 DataSource 名稱與 DataSet 引用關係,只將連線字串中的環境資訊替換成明確的占位符。

核心原則: 保留 DataverseTDS,將伺服器名稱和環境唯一名稱替換成 __PROD_DATAVERSE_TDS_SERVER__ 等占位符。

為什麼不能直接刪除 DataSource?

RDL 內的 DataSet 會透過名稱引用 DataSource。例如:

<DataSource Name="DataverseTDS">
    ...
</DataSource>

<DataSet Name="TaxStatus">
    <Query>
        <DataSourceName>DataverseTDS</DataSourceName>
    </Query>
</DataSet>

如果刪除 DataverseTDS,DataSet 仍然會尋找同名資料來源,導致報表無法執行。即使重新建立另一個名稱不同的 DataSource,也必須逐一修改所有 DataSet 的引用。

因此,最省事且不容易出錯的方法是:

  • 保留 DataSource 名稱。
  • 保留 DataSet 與 DataSource 的引用關係。
  • 只替換連線字串中的環境相關資訊。

建議的占位連線字串

Data Source=__PROD_DATAVERSE_TDS_SERVER__,5558;
Initial Catalog=__PROD_DATAVERSE_ENV_UNIQUE_NAME__;
Encrypt=True;
TrustServerCertificate=False;
Authentication=Active Directory Interactive;
占位符 替換內容
__PROD_DATAVERSE_TDS_SERVER__ 客戶的 Dataverse 環境主機名稱,例如 yourenvironment.crmX.dynamics.com
__PROD_DATAVERSE_ENV_UNIQUE_NAME__ 「開発者リソース」中的「環境の一意の名前」,通常以 unq 開頭

推薦的交付與部署流程

  1. 保留 RDL 中原有的 DataverseTDS DataSource。
  2. 將伺服器、環境唯一名稱等環境資訊替換為明確的占位符。
  3. 移除開發者自己的帳號、Email、密碼及存取權杖。
  4. 將 RDL 與占位符替換說明一起交付。
  5. 客戶使用 Power BI Report Builder 開啟 RDL。
  6. 將占位符替換成客戶環境的實際值。
  7. 執行 Test Connection。
  8. 在本機執行完整報表,確認查詢、參數與權限正常。
  9. 儲存設定完成的 RDL,再上傳 Power BI Workspace。
  10. 在 Power BI Service 中設定 OAuth2 或 SSO 認證,並再次執行報表。
注意: 包含占位符的 RDL 是「部署範本」,不是可以直接執行的最終成品。客戶必須完成替換與連線測試後才能正式上傳使用。

占位符命名建議

占位符應該明確、容易搜尋,而且不應看起來像真實伺服器:

__DEV_DATAVERSE_TDS_SERVER__
__TEST_DATAVERSE_TDS_SERVER__
__PROD_DATAVERSE_TDS_SERVER__

__DEV_DATAVERSE_ENV_UNIQUE_NAME__
__TEST_DATAVERSE_ENV_UNIQUE_NAME__
__PROD_DATAVERSE_ENV_UNIQUE_NAME__

這種命名方式可以清楚區分開發、測試與正式環境,也方便透過搜尋取代或部署工具進行自動替換。

總結

交付 RDL 時,應保留 DataSource 及其原有名稱,避免破壞 DataSet 的內部引用。對於不適合直接交付的環境資訊,使用清楚的占位符取代,並要求客戶在本機完成設定與測試後再上傳 Workspace。

簡單來說:保留結構、替換連線資訊、測試成功後再部署。

This article was last edited at