本文涵蓋鏡像適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的疑難排解步驟。
疑難排解鏡像表格選取期間的錯誤/警告訊息
當您建立新的鏡像資料庫時,在 [ 選擇資料 ] 頁面中,您可能會收到一些有關來源資料庫中特定資料表的視覺意見反應。 下表提供潛在問題的清單,包括顯示的訊息,以及如何解決問題的相關說明。
| 狀態碼 | 狀態類型 | Message | Description |
|---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
ERROR | 綱目 {} 不存在 | 給定的結構描述不存在。 它本可以在 Fabric 提取相關表格資訊時被刪除。 重試。 |
TABLE_DOES_NOT_EXIST |
ERROR | 在schema {}中,table {} 不存在。 | 給定的表格不存在。 它本可以在 Fabric 提取相關表格資訊時被刪除。 重試。 |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
ERROR | 表格 {}。{} 欄名稱中包含禁止字元 {} | 給定資料行的名稱中具有不支援的字元。 1 |
UNSUPPORTED_DATA_TYPE |
ERROR | 表格 {}。{} 欄中不支援的資料類型 {} | 一個 (或多個) 資料表的資料行目前具有不支援的資料類型。 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
ERROR | 表格 {}。{} 名稱中包含禁止字元 | 表格名稱有不支援的字元。 1 |
NOT_REGULAR_TABLE |
ERROR | 表 {}.{} 不是一般表 | 鏡映不支援表格類型。 2 |
HAS_PRIMARY_KEY |
OK | 表 {}。{} 具有主索引鍵 | Table 是一般表格,具有用於鏡映的有效主索引鍵。 |
HAS_UNIQUE_INDEX |
OK | 表 {}.{} 具有合適的唯一索引 | 表格沒有主索引鍵,但具有唯一索引,該索引應用於鏡像。 |
NO_INDEX_FULL_IDENTITY |
儆 | 表 {}。{} 沒有合適的唯一索引。 使用完整身分識別 | 表格沒有主索引鍵或唯一索引,因此 REPLICA IDENTITY FULL 需要支援鏡像,這可能會導致效能問題。 |
1 不支援具有空格 (' ') 字元的物件識別碼。
2 鏡像不支援此資料表類型。 目前不支援檢視、具體化檢視、外部資料表和分割資料表。
3 如需不支援的資料類型清單,請參閱 限制。 僅支援具有下列類型的資料行:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* 不作為主鍵) timestamp without time zonetimestamp with time zoneuuid
在 Postgres 中,對應於完全相同時刻但位於不同時區的兩個「時區時間」值被視為不同。 例如: 06:24:00.59+05 並 05:24:00.59+04 對應於相同的紀元時間,但Postgres對它們的處理方式不同。
Fabric 容量或工作區的變更
| 原因 | Result | 建議的解決方法 |
|---|---|---|
| Fabric 容量已暫停/刪除 | 鏡像停止 | 1. 從 Azure 入口網站繼續或指派容量 2. 移至 Fabric 鏡像資料庫項目。 從工具列中,選取 [停止複寫]。 3. 在 Fabric 入口網站中選取鏡像項目的 [鏡像資料庫 ] 來啟動複寫。 |
| 光纖容量已恢復 | 鏡像將不會恢復 | 1. 移至 Fabric 鏡像資料庫專案。 從工具列中,選取 [停止複寫]。 2. 在 Fabric 入口網站中選取鏡像項目的 [鏡像資料庫 ] 來啟動複寫。 |
| 已刪除工作區 | 鏡像自動停止 | 如果鏡像在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器上仍然作用中,請使用伺服器系統管理員進行連線,並在 PostgreSQL 伺服器上執行下列命令: select azure_cdc.list_tracked_publications();,然後使用傳回的發行集名稱並執行 select azure_cdc.stop_publication(<publication_name>); |
| Fabric 試用容量已過期 | 鏡像自動停止 | 請參閱 Fabric 試用容量到期。 |
| 超過結構容量 | 鏡像暫停 | 等到過載狀態結束或更新您的容量。 如需進一步了解 ,請參閱您可以採取的動作,以從超載狀況中復原。 恢復容量後,鏡映會繼續進行。 |
| 任何其他資源錯誤 | 鏡像已停用 | 為了確保您的計算資源不會受到影響,並將對適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的影響降到最低,鏡像會停用任何持續性資源錯誤。 |
| 「使用者可以使用 Fabric 外部的應用程式存取儲存在 OneLake 中的資料」設定已停用 | 「複寫器 - 資料表無法達到複寫狀態」 | 啟用租用戶設定 使用者可以使用 Fabric 外部的應用程式存取儲存在 OneLake 中的資料。 |
用於疑難排解的 SQL 查詢
如果您遇到鏡像問題,請使用系統檢視和函式執行下列伺服器層級檢查,以驗證設定。
執行下列查詢,以檢查變更是否正確流動:
select * from azure_cdc.tracked_publications;檢查發行集是否處於作用中狀態,且已產生快照集。 您也可以透過查詢來檢查是否已產生後續變更批次:
select * from azure_cdc.tracked_batches;如果檢視未
azure_cdc.tracked_publications顯示處理累加變更的任何進度,請執行下列 SQL 查詢,以檢查是否有任何問題回報:SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';如果未報告任何問題,請執行下列命令,以檢閱鏡像 PostgreSQL 資料庫的目前組態。 確認它已正確啟用。
SELECT * FROM pg_replication_slots;在這裡尋找的關鍵欄是
slot_name和active。 除了 (true) 之外t的任何值都表示潛在問題。如果需要疑難排解,請聯絡支援人員。
受管理的識別
必須啟用適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的系統指派受控識別 (SAMI),而且必須是主要身分識別。 如需詳細資訊,請參閱 PostgreSQL 彈性伺服器的系統指派受控識別。
啟用之後,如果稍後停用 SAMI 設定狀態,然後再次啟用,則適用於 PostgreSQL 的 Azure 資料庫彈性伺服器鏡像至 Fabric OneLake 會失敗。
使用下列查詢確認 SAMI 已啟用: show azure.service_principal_id;
SAMI 權限
請勿移除適用於 PostgreSQL 的 Azure 資料庫彈性伺服器系統指派受控識別 (SAMI) 參與者對 Fabric 鏡像資料庫專案的許可權。
如果您不小心移除 SAMI 許可權,鏡像適用於 PostgreSQL 的 Azure 資料庫彈性伺服器不會如預期般運作。 無法從來源資料庫鏡像任何新資料。
如果您移除適用於 PostgreSQL 的 Azure 資料庫彈性伺服器 SAMI 權限或權限設定不正確,請使用下列步驟。
- 選取鏡像資料庫項目上的省略符號選項,將
...彈性伺服器 SAMI 新增為使用者。 - 選取 [管理許可權 ] 選項。
- 輸入適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的名稱。 提供 讀取 和 寫入 權限。