交付 RDL 時不要刪除 DataSource:使用占位符保留完整結構
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1399
將 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 開頭 |
推薦的交付與部署流程
- 保留 RDL 中原有的
DataverseTDSDataSource。 - 將伺服器、環境唯一名稱等環境資訊替換為明確的占位符。
- 移除開發者自己的帳號、Email、密碼及存取權杖。
- 將 RDL 與占位符替換說明一起交付。
- 客戶使用 Power BI Report Builder 開啟 RDL。
- 將占位符替換成客戶環境的實際值。
- 執行
Test Connection。 - 在本機執行完整報表,確認查詢、參數與權限正常。
- 儲存設定完成的 RDL,再上傳 Power BI Workspace。
- 在 Power BI Service 中設定 OAuth2 或 SSO 認證,並再次執行報表。
占位符命名建議
占位符應該明確、容易搜尋,而且不應看起來像真實伺服器:
__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