總結
| 項目 | 描述 |
|---|---|
| 發行狀態 | 正式運作 |
| 產品 | Excel Power BI (語意模型) Power BI (數據流) 網狀架構 (資料流 Gen2) Power Apps (數據流) Dynamics 365 Customer Insights |
| 支援的驗證類型 | 基本 資料庫 窗戶 |
| 函式參考檔 | DB2。資料庫 |
注意
某些功能可能會存在於一個產品中,但由於部署排程和主機特定功能,而不存在於其他產品中。
先決條件
根據預設,IBM Db2 資料庫連接器會使用 Microsoft 驅動程式來連線到您的數據。 如果您選擇在 Power Query Desktop 的進階選項中使用 IBM 驅動程式,您必須先在用來連線到數據的電腦上安裝 IBM Db2 driver for .NET。 此驅動程式的名稱會不時變更,因此請務必安裝與 .NET 搭配運作的 IBM Db2 驅動程式。 如需如何下載、安裝和設定適用於 .NET 的 IBM Db2 驅動程式的指示,請移至 下載初始版本 11.5 用戶端和驅動程式。 詳細資訊:驅動程式限制,確定已安裝 IBM Db2 驅動程式
支援的功能
- 進口
- DirectQuery (Power BI 語意模型)
- 進階選項
- 驅動程式(IBM或Microsoft)
- 命令逾時以分鐘為單位
- 套件集
- SQL 語法
- 包含關係欄位
- 使用完整階層巡覽
從 Power Query Desktop 連線到 IBM Db2 資料庫
若要進行連線,請執行下列步驟:
從 [取得數據]中選取 [
IBM Db2 資料庫 ] 選項。請選擇要在 Server中連線的 IBM Db2 伺服器。 如果需要埠,請使用 serverName:Port
格式來指定埠,其中 Port 是埠號碼。 此外,輸入您要在 Database中存取的 IBM Db2 資料庫。 在此範例中,伺服器名稱和端口是TestIBMDb2server.contoso.com:4000,而要存取的 IBM Db2 資料庫是NORTHWD2。
如果您要從 Power BI Desktop 連線,請選取 [匯入] 或 [DirectQuery 數據連線模式]。 這些範例步驟的其餘部分會使用匯入數據連線模式。 若要深入瞭解 DirectQuery,請移至 在 Power BI Desktop 中使用 DirectQuery。
注意
根據預設,IBM Db2 資料庫對話框會在登入期間使用Microsoft驅動程式。 如果您想要使用 IBM 驅動程式,請開啟 [進階選項],然後選取 [IBM]。 如需更多資訊,請移至 ,使用進階選項連線。
如果您選取 DirectQuery 作為資料連線模式,進階選項中的 SQL 陳述式 會停用。 DirectQuery 目前不支援在 IBM Db2 連接器的原生資料庫查詢之上向下推送查詢。
選取 [確定]。
如果您是第一次連線到此 IBM Db2 資料庫,請選取您要使用的驗證類型,輸入您的認證,然後選取 [連線]。 如需驗證的詳細資訊,請前往 使用資料來源驗證。
根據預設,Power Query 會嘗試使用加密連線來連線到 IBM Db2 資料庫。 如果 Power Query 無法使用加密連線連線,則會出現「無法連線」對話方塊。 若要使用未加密的連線進行連接,請選取 [確定]。
在 Navigator中,選取您需要的數據,然後選取 [載入] [載入] 以載入數據,或 [轉換數據] 來轉換數據。
從 Power Query Online 連線到 IBM Db2 資料庫
若要進行連線,請執行下列步驟:
在 [Power Query - 連接到數據源] 頁面中,選取 [IBM Db2 資料庫] 選項。
請選擇要在 Server中連線的 IBM Db2 伺服器。 如果需要埠,請使用 serverName:Port
格式來指定埠,其中 Port 是埠號碼。 此外,輸入您要在 Database中存取的 IBM Db2 資料庫。 在此範例中,伺服器名稱和埠TestIBMDb2server.contoso.com:4000且要存取的IBM Db2 資料庫NORTHWD2選取內部部署數據閘道的名稱。
注意
您必須選取此連接器的內部部署數據閘道,不論 IBM Db2 資料庫位於您的局域網路上還是在線。
如果您是第一次連線到此 IBM Db2 資料庫,請在 [鑑別類型] 中選取連線的認證類型。 如果您打算使用在 IBM Db2 資料庫中建立的帳戶,而不是 Windows 鑑別,請選擇 基本 。
輸入您的認證。
如果您想要使用加密連線,請選取 [[使用加密連線];如果您想要使用未加密的連線,請清除選項。
選取 下一步 以繼續。
在 Navigator中,選取您需要的數據,然後在 Power Query 編輯器中選取 轉換數據] 以轉換數據。
使用進階選項進行連線
Power Query 提供一組進階選項,您可以視需要新增至查詢。
下表列出您可以在Power Query 中設定的所有進階選項。
| 進階選項 | 描述 |
|---|---|
| 司機 | 確定用於連線到 IBM Db2 資料庫的驅動程式。 選擇是 IBM 和 Windows (預設值)。 如果您選取 IBM 驅動程式,您必須先確定電腦上已安裝適用於 .NET 的 IBM Db2 驅動程式。 此選項僅適用於Power Query Desktop。 詳細資訊:確定已安裝 IBM Db2 驅動程式 |
| 命令逾時以分鐘為單位 | 如果您的連線持續超過 10 分鐘(預設逾時),您可以在幾分鐘內輸入另一個值,讓連線保持開啟時間更長。 |
| 套件集 | 指定要尋找套件的位置。 套件是 Db2 在處理 SQL 陳述式時使用的控制結構,並在必要時自動建立。 根據預設,這個選項會使用 值 NULLID。 只有在使用 Microsoft 驅動程式時才能使用。 詳細資訊:DB2 套件:概念、範例和常見問題 |
| SQL 語法 | 如需詳細資訊,請查看 使用原生資料庫查詢從資料庫匯入資料。 |
| 包含關係欄位 | 若勾選,則包含可能與其他數據表有關聯性的欄。 如果清除此方塊,您將看不到這些欄。 |
| 使用完整階層巡覽 | 如果勾選,導覽器會顯示您所連接資料庫中資料表的完整階層。 如果清除,導覽器只會顯示其數據行和數據列包含數據的數據表。 |
選取所需的進階選項之後,請在 Power Query Desktop 中選取 [ 確定 ] 或在 Power Query Online 中選取 [ 下一步 ] 以連線到您的 IBM Db2 資料庫。
問題和限制
驅動程式限制
Microsoft 驅動程式是與 Microsoft 主機整合伺服器中使用的相同驅動程式,稱為「ADO.NET 提供者 for DB2」。IBM 驅動程式是與 .NET 搭配使用的 IBM Db2 驅動程式。 此驅動程式的名稱會不時變更,因此請確定它是與 .NET 搭配運作的驅動程式,這與使用 OLE/DB、ODBC 或 JDBC 的 IBM Db2 驅動程式不同。
如果您使用 Power Query Desktop,您可以選擇使用 Microsoft 驅動程式 (預設值) 或 IBM 驅動程式。 目前,Power Query Online 只會使用 Microsoft 驅動程式。 每個驅動程式都有其限制。
- Microsoft驅動程式
- 僅支援傳輸層安全性 (TLS),從 2024 年 12 月版本的 Power BI Desktop 或更高版本開始。
- IBM 驅動程式
- 使用適用於 .NET 的 IBM Db2 驅動程式時,IBM Db2 資料庫連接器不適用於大型主機或 IBM i 系統
- 不支援 DirectQuery
Microsoft提供Microsoft驅動程序的支援,但不支援 IBM 驅動程式。 不過,如果您的 IT 部門已在您的機器上設定及配置它,則 IT 部門應該知道如何對 IBM 驅動程式進行疑難排解。
DirectQuery 中不支援原生查詢
當您在Power Query Desktop 中選取 DirectQuery 作為數據連線模式時,會停用進階選項中的 [SQL 語句] 文字框。 此方塊已停用,因為 Power Query IBM Db2 連接器目前不支援原生資料庫查詢之上的查詢下推。
故障排除
確定已安裝IBM Db2 驅動程式
如果您選擇使用適用於 Power Query Desktop 的 IBM Db2 驅動程式,您必須先在電腦上安裝、安裝及設定驅動程式。 若要確保已安裝 IBM Db2 驅動程式:
在您的電腦上開啟 Windows PowerShell。
輸入下列命令:
[System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv在開啟的對話框中,您應該會在 InvariantName 欄中看到下列名稱:
IBM.Data.DB2
如果此名稱位於 InvariantName 直欄中,則已正確安裝並配置 IBM Db2 驅動程式。
SQLCODE -805 和 SQLCODE -551 錯誤碼
嘗試連線到 IBM Db2 資料庫時,您有時可能會遇到常見錯誤 SQLCODE -805,這表示在 NULLID 或其他集合中找不到套件(在 Power Query 套件連線 設定中指定)。 您可能也會遇到一般錯誤 SQLCODE -551,指出您無法建立套件,因為您缺少套件連結權限。
一般而言, SQLCODE -805 後面接著 SQLCODE -551,但只會顯示第二個異常狀況。 事實上,問題相同。 您缺少將套件系結至 NULLID 或指定集合的許可權。
通常,大部分的 IBM Db2 系統管理員不會將綁定套件權限授予終端使用者,特別是在 IBM z/OS(大型主機)或 IBM i(AS/400)環境中。 Linux、Unix 或 Windows 上的 Db2 不同之處在於,依預設,使用者帳戶具有連結專用權,會在使用者自己的集合中建立MSCS001 (游標穩定性) 套件 (name = 使用者登入名稱)。
如果您沒有連結套件專用權,則需要要求 Db2 管理者取得套件連結權限。 使用此套件連結權限,連接至資料庫並提取資料,這會自動建立套件。 之後,系統管理員可以撤銷封裝綁定權限。 此外,系統管理員之後可以將套件「綁定複製」至其他集合,以增加並行性,更符合套件綁定位置的內部標準等。
當您連接至 IBM Db2 for z/OS 時, Db2 管理者可以執行下列步驟。
使用下列命令之一,授予權限,將新套件綁定至使用者:
- 將 BINDADD 權限授予系統至 <authorization_name>
- 授予 <collection_name> 的 PACKADM 權限給 <authorization_name>
使用 Power Query 連線到 IBM Db2 資料庫,並擷取架構、數據表和檢視清單。 Power Query IBM Db2 資料庫連接器會自動建立套件 NULLID.MSCS001,然後將套件的執行權授予公共。
使用下列其中一個命令撤銷將新套件系結至使用者的授權:
- 撤銷 BINDADD 授權 <authorization_name>
- 撤銷 PACKADM 在 <collection_name> 從 <authorization_name>
當您連接至 IBM Db2 for Linux, Unix, or Windows 時, Db2 管理者可以執行下列步驟。
在資料庫上將 BINDADD 權限授予使用者 <authorization_name>。
使用 Power Query 連線到 IBM Db2 資料庫,並擷取架構、數據表和檢視清單。 Power Query IBM Db2 連接器會自動建立套件 NULLID.MSCS001,然後授與執行該套件的權限給所有使用者。
從使用者 <authorization_name>撤銷資料庫上的BINDADD。
GRANT EXECUTE ON PACKAGE <collection.package> 授權給使用者 <authorization_name>。
當您連接至 IBM Db2 for i 時, Db2 管理者可以執行下列步驟。
WRKOBJ QSYS/CRTSQLPKG。 輸入 「2」 以變更物件授權單位。
將授權單位從 *EXCLUDE 變更為 PUBLIC 或 <authorization_name>。
之後,將授權單位變更回 *EXCLUDE。
SQLCODE -360 錯誤碼
嘗試連接至 IBM Db2 資料庫時,您可能會遇到下列錯誤:
Microsoft Db2 Client: The host resource could not be found. Check that the Initial Catalog value matches the host resource name. SQLSTATE=HY000 SQLCODE=-360
此錯誤訊息表示您沒有為資料庫名稱輸入正確的值。
SQLCODE -1336 錯誤碼
The specified host could not be found.
請仔細檢查名稱,並確認主機可連線。 例如,在命令提示字元中使用 ping,嘗試連線到伺服器並確保 IP 位址正確,或使用 telnet 與伺服器通訊。
SQLCODE -1037 錯誤碼
Host is reachable, but is not responding on the specified port.
埠是在伺服器名稱結尾指定,並以冒號分隔。 如果省略,則會使用預設值 50000。
若要尋找適用於Linux、Unix和 Windows 的埠 Db2,請執行下列命令:
db2 get dbm cfg | findstr SVCENAME
檢查輸出結果中是否有 SVCENAME 的條目(以及 TLS 加密連線的 SSL_SVCENAME)。 如果此值是數字,則為連接埠。 否則,請將數值與系統的「服務」資料表進行交叉比對。 您通常可以在 /etc/services 或 Windows 的 c:\windows\system32\drivers\etc\services 找到此表格。
下列螢幕快照顯示此命令在Linux/Unix中的輸出。
下列螢幕快照顯示 Windows 中此命令的輸出。
判斷資料庫名稱
若要判斷要使用的資料庫名稱:
在 IBM i 上,執行
DSPRDBDIRE。
其中一個項目的 「遠端位置」 為 *LOCAL。 這個條目是要使用的。
判斷埠號碼
Microsoft驅動程式會使用分散式關係資料庫架構 (DRDA) 通訊協定連接到資料庫。 DRDA 的預設埠是埠 446。 請先嘗試此值。
若要確認 DRDA 服務在執行的特定埠:
WRKSRVTBLE執行 IBM i 命令。向下捲動,直到您找到DRDA的項目為止。
若要確認DRDA服務已啟動並接聽該連接埠,請執行
NETSTAT。
選擇選項 3 (適用於 IPv4) 或選項 6 (適用於 IPv6)。
按 F14 列出埠號而不是名稱,然後捲動列表直到找到目標埠。 它應該有一個具有「監聽」狀態的項目。