ODBC 資料來源的 Power BI 閘道和 Report Builder 支援
適用於: Power BI Report Builder Power BI Desktop
本文說明如何在 Power BI 閘道中設定 Open Database Connectivity (ODBC) 資料來源,以及如何在 Power BI Report Builder 中使用 ODBC 資料來源。
支援資料來源名稱 (DSN) 和驅動程式連接字串。
注意
Power BI Report Builder 現在是 64 位元,且不再使用 32 位元驅動程式。 Power BI Report Builder 與 Power BI 閘道都需要 64 位元版本。
安裝 Power BI 閘道之前
您需要 Power BI 閘道版本 2021 年 2 月或更新版本。 建議您在與 Power BI Report Builder 或 Power BI Desktop 不同的電腦上安裝閘道。 在某些情況下,使用相同的電腦可能會造成問題。
安裝和設定適用於 ODBC 資料來源的 Power BI Report Builder
最新版的 Power BI Report Builder 已經包含 ODBC 資料延伸模組。
- 安裝 Power BI Report Builder 的最新版本
- 安裝您打算搭配 Power BI Report Builder 使用的 64 位元 ODBC 驅動程式。
安裝 Power BI 閘道,設定 ODBC 資料來源
請遵循下列步驟來設定 ODBC 資料來源的 Power BI 閘道。
下載最新的 Power BI 閘道。
注意
編頁報表不支援個人閘道,因為它們需要 DirectQuery 支援。
請參閱什麼是內部部署資料閘道?一文,以取得其設定資訊。
安裝您打算在閘道電腦上使用的 64 位元 ODBC 驅動程式。
注意
不支援檔案 DSN。 如果您想要使用 DSN,請在閘道電腦上建立 64 位元的系統 DSN。
若要在 Power BI 服務中設定 ODBC 資料來源,請在 [設定] 底下選取 [管理連線和網關]:
選取功能區頂端的 [新增],以新增資料來源。 然後選擇 [新增資料來源]>[ODBC 資料來源類型]:
貼上連接字串 (系統 DSN 或驅動程式),然後選取驗證方法。 對於 ODBC 資料來源,支援下列驗證方法:
- 基本
- Windows
當您選取 [新增] 按鈕 時,Power BI 服務會使用提供的連接字串和認證來連線到 ODBC 資料來源,以驗證閘道是否能夠連線。
ODBC 連接字串範例
以下是系統 DSN 的一些 ODBC 連接字串範例,以及各種 ODBC 驅動程式:
- "dsn=Northwind"
- "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=c:\Data\Northwind.mdb"
- "driver={SnowflakeDSIIDriver};warehouse=DEMO_WH;server=org.snowflakecomputing.com"
- "driver={Amazon Redshift (x64)};server=org.us-west-2.redshift.amazonaws.com;database=dev"
有些驅動程式和組態可能不支援所有驗證方法。
除了預先在閘道中建立 ODBC 資料來源,您也可以在上傳編頁報表時視需要建立 ODBC 資料來源。 如果 ODBC 資料來源不存在,上傳程序會提示您建立一個:
限制與考量
一般而言,在 Power BI Report Builder 中使用 ODBC 資料延伸模組的所有限制也適用於在 Power BI 閘道中使用 ODBC 資料延伸模組。
以下是一些限制:
對於大部分的 ODBC 驅動程式,DateTime 參數需要變更 RDL 資料集中的命令文字,才能將 DateTime 參數值轉換成指定 ODBC 資料來源的適當格式。
範例查詢:
SELECT * FROM DEMO_DB.PUBLIC.DATES WHERE DATE < DATE(?)
注意
有些資料來源可能需要特定的格式設定。 您可使用運算式來格式化上述範例中的參數。 例如:
=Format(Parameters!Date.Value, "yyyy-MM-dd")
。對於某些 ODBC 驅動程式,閘道與 Power BI Report Builder 之間有行為差異。 這可能適用於所有、部分或僅只一個驅動程式。 其中一個範例是 Simba-BigQuery 查詢不是字串類型時需要轉換參數。
錯誤字串範例:「此報表所使用的資料來源傳回了錯誤。 存取目標資料來源時發生例外狀況 錯誤 [42000] [Simba][BigQuery] (70) 無效的查詢:以下引數類型沒有運算子 = 的相符簽章:INT64、STRING。 支援的簽章:ANY = ANY at [2:7]"
具有 INT64 資料行適當轉換的範例查詢:
SELECT * FROM 'teamplz.Sample.SampleTable' WHERE DataID=CAST(? as INT64)
不支援由指定的 ODBC 驅動程式或後端公開,且不只是對應至 ADO.Net 資料類型的任何特殊資料類型。 其中一個範例是 Snowflake 陣列資料類型。
通常不支援以下情況:ODBC 驅動程式使用不含參數的預存程序。 不過,Amazon Redshift 驅動程式具有支援的 in/out 參數。