共用方式為


IBM Db2 資料庫

總結

項目 描述
發行狀態 正式運作
產品 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 資料庫

若要進行連線,請執行下列步驟:

  1. 從 [取得數據]中選取 [IBM Db2 資料庫] 選項。

  2. 請選擇要在 Server中連線的 IBM Db2 伺服器。 如果需要埠,請使用 serverName:Port格式來指定埠,其中 Port 是埠號碼。 此外,輸入您要在 Database中存取的 IBM Db2 資料庫。 在此範例中,伺服器名稱和端口是 TestIBMDb2server.contoso.com:4000,而要存取的 IBM Db2 資料庫是 NORTHWD2

    您輸入連線資訊的 IBM Db2 資料庫連線對話框的螢幕擷取畫面。

  3. 如果您要從 Power BI Desktop 連線,請選取 [匯入] 或 [DirectQuery 數據連線模式]。 這些範例步驟的其餘部分會使用匯入數據連線模式。 若要深入瞭解 DirectQuery,請移至 在 Power BI Desktop 中使用 DirectQuery

    注意

    根據預設,IBM Db2 資料庫對話框會在登入期間使用Microsoft驅動程式。 如果您想要使用 IBM 驅動程式,請開啟 [進階選項],然後選取 [IBM]。 如需更多資訊,請移至 ,使用進階選項連線

    如果您選取 DirectQuery 作為資料連線模式,進階選項中的 SQL 陳述式 會停用。 DirectQuery 目前不支援在 IBM Db2 連接器的原生資料庫查詢之上向下推送查詢。

  4. 選取 [確定]

  5. 如果您是第一次連線到此 IBM Db2 資料庫,請選取您要使用的驗證類型,輸入您的認證,然後選取 [連線]。 如需驗證的詳細資訊,請前往 使用資料來源驗證

    包含您輸入 IBM Db2 資料庫憑證的驗證對話框的截圖。

    根據預設,Power Query 會嘗試使用加密連線來連線到 IBM Db2 資料庫。 如果 Power Query 無法使用加密連線連線,則會出現「無法連線」對話方塊。 若要使用未加密的連線進行連接,請選取 [確定]

    加密支援訊息的螢幕擷取畫面,您可以在其中決定使用未加密的連線。

  6. Navigator中,選取您需要的數據,然後選取 [載入] [載入] 以載入數據,或 [轉換數據] 來轉換數據。

    「導覽器」的螢幕擷取畫面,您可以在其中從資料庫中選取所需的資料。

從 Power Query Online 連線到 IBM Db2 資料庫

若要進行連線,請執行下列步驟:

  1. 在 [Power Query - 連接到數據源] 頁面中,選取 [IBM Db2 資料庫] 選項。

  2. 請選擇要在 Server中連線的 IBM Db2 伺服器。 如果需要埠,請使用 serverName:Port格式來指定埠,其中 Port 是埠號碼。 此外,輸入您要在 Database中存取的 IBM Db2 資料庫。 在此範例中,伺服器名稱和埠 TestIBMDb2server.contoso.com:4000 且要存取的IBM Db2 資料庫 NORTHWD2

  3. 選取內部部署數據閘道的名稱。

    注意

    您必須選取此連接器的內部部署數據閘道,不論 IBM Db2 資料庫位於您的局域網路上還是在線。

  4. 如果您是第一次連線到此 IBM Db2 資料庫,請在 [鑑別類型] 中選取連線的認證類型。 如果您打算使用在 IBM Db2 資料庫中建立的帳戶,而不是 Windows 鑑別,請選擇 基本

  5. 輸入您的認證。

  6. 如果您想要使用加密連線,請選取 [[使用加密連線];如果您想要使用未加密的連線,請清除選項。

    IBM Db2 資料庫線上連線設定的螢幕擷取畫面,並輸入必要的設定。

  7. 選取 下一步 以繼續。

  8. Navigator中,選取您需要的數據,然後在 Power Query 編輯器中選取 轉換數據] 以轉換數據。

    線上導覽器的螢幕擷取畫面,您可以在其中選取要轉換的資料。

使用進階選項進行連線

Power Query 提供一組進階選項,您可以視需要新增至查詢。

IBM Db2 資料庫連線對話框中包含的進階選項的螢幕擷取畫面。

下表列出您可以在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 驅動程式:

  1. 在您的電腦上開啟 Windows PowerShell。

  2. 輸入下列命令:

    [System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv

  3. 在開啟的對話框中,您應該會在 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 管理者可以執行下列步驟。

  1. 使用下列命令之一,授予權限,將新套件綁定至使用者:

    • 將 BINDADD 權限授予系統至 <authorization_name>
    • 授予 <collection_name> 的 PACKADM 權限給 <authorization_name>
  2. 使用 Power Query 連線到 IBM Db2 資料庫,並擷取架構、數據表和檢視清單。 Power Query IBM Db2 資料庫連接器會自動建立套件 NULLID.MSCS001,然後將套件的執行權授予公共。

  3. 使用下列其中一個命令撤銷將新套件系結至使用者的授權:

    • 撤銷 BINDADD 授權 <authorization_name>
    • 撤銷 PACKADM 在 <collection_name> 從 <authorization_name>

當您連接至 IBM Db2 for Linux, Unix, or Windows 時, Db2 管理者可以執行下列步驟。

  1. 在資料庫上將 BINDADD 權限授予使用者 <authorization_name>。

  2. 使用 Power Query 連線到 IBM Db2 資料庫,並擷取架構、數據表和檢視清單。 Power Query IBM Db2 連接器會自動建立套件 NULLID.MSCS001,然後授與執行該套件的權限給所有使用者。

  3. 從使用者 <authorization_name>撤銷資料庫上的BINDADD。

  4. GRANT EXECUTE ON PACKAGE <collection.package> 授權給使用者 <authorization_name>。

當您連接至 IBM Db2 for i 時, Db2 管理者可以執行下列步驟。

  1. WRKOBJ QSYS/CRTSQLPKG。 輸入 「2」 以變更物件授權單位。

  2. 將授權單位從 *EXCLUDE 變更為 PUBLIC 或 <authorization_name>。

  3. 之後,將授權單位變更回 *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中的輸出。

顯示 Linux 和 Unix 中 db2 命令輸出的螢幕擷取畫面。

下列螢幕快照顯示 Windows 中此命令的輸出。

顯示 Windows 中 db2 指令輸出的螢幕擷取畫面。

判斷資料庫名稱

若要判斷要使用的資料庫名稱:

  1. 在 IBM i 上,執行 DSPRDBDIRE

    螢幕擷取畫面顯示「顯示關聯式資料庫目錄項目」的輸出。

  2. 其中一個項目的 「遠端位置」 為 *LOCAL。 這個條目是要使用的。

判斷埠號碼

Microsoft驅動程式會使用分散式關係資料庫架構 (DRDA) 通訊協定連接到資料庫。 DRDA 的預設埠是埠 446。 請先嘗試此值。

若要確認 DRDA 服務在執行的特定埠:

  1. WRKSRVTBLE執行 IBM i 命令。

  2. 向下捲動,直到您找到DRDA的項目為止。

    螢幕擷取畫面顯示服務表中的條目,並顯示 DRDA 條目。

  3. 若要確認DRDA服務已啟動並接聽該連接埠,請執行 NETSTAT

    NETSTAT 選項的螢幕擷取畫面供您選取。

  4. 選擇選項 3 (適用於 IPv4) 或選項 6 (適用於 IPv6)。

  5. 按 F14 列出埠號而不是名稱,然後捲動列表直到找到目標埠。 它應該有一個具有「監聽」狀態的項目。

    顯示接聽狀態的 IPv4 連線狀態螢幕擷取畫面。