在 Azure Data Factory 和 Azure Synapse Analytics 中針對 Azure Cosmos DB 連接器進行疑難排解
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文提供建議,協助在 Azure Data Factory 和 Azure Synapse Analytics 中針對 Azure Cosmos DB 和 Azure Cosmos DB for NoSQL 連接器的常見問題進行疑難排解。
錯誤訊息: 要求大小太大
徵兆:將資料複製到有預設寫入批次大小的 Azure Cosmos DB 時,發生下列錯誤:
Request size is too large.
原因:Azure Cosmos DB 將單一要求的大小限制為 2 MB。 公式為「要求大小 = 單一文件大小 * 寫入批次大小」。 如果文件很大,預設行為會產生太大的要求。
解決方法:
您可以調整寫入批次大小。 在複製活動接收器中,降低「寫入批次大小」值 (預設值為 10000)。
如果將寫入批次大小值縮減 為 1 仍然無法運作,請將 Azure Cosmos DB SQL API 從 V2 變更為 V3。 若要完成此設定,您有兩個選項:- 選項 1: 將您的驗證類型變更為服務主體,或系統指派的受控識別或使用者指派的受控識別。
- 選項 2: 如果您想要使用帳戶金鑰驗證,請遵循下列步驟:
建立 Azure Cosmos DB for NoSQL 連結服務。
使用下列範本更新連結服務。
{ "name": "<CosmosDbV3>", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "annotations": [], "type": "CosmosDb", "typeProperties": { "useV3": true, "accountEndpoint": "<account endpoint>", "database": "<database name>", "accountKey": { "type": "SecureString", "value": "<account key>" } } } }
錯誤訊息: 唯一索引限制違規
徵兆:將資料複製到 Azure Cosmos DB 時發生下列錯誤:
Message=Partition range id 0 | Failed to import mini-batch. Exception was Message: {"Errors":["Encountered exception while executing function. Exception = Error: {\"Errors\":[\"Unique index constraint violation.\"]}...
原因:可能的原因有二:
- 原因 1:如果使用 Insert 作為寫入行為,此錯誤表示來源資料中有資料列或物件具有相同識別碼。
- 原因 2:如果使用 Upsert 作為寫入行為,並將另一個唯一索引鍵設定為容器,此錯誤表示來源資料中有資料列和物件具有不同識別碼,但定義的唯一索引鍵有相同的值。
解決方法:
- 若為原因 1,請將 Upsert 設定為寫入行為。
- 若為原因 2,請確定每個文件中定義的唯一索引鍵有不同的值。
錯誤訊息: 要求率過高
徵兆:將資料複製到 Azure Cosmos DB 時發生下列錯誤:
Type=Microsoft.Azure.Documents.DocumentClientException, Message=Message: {"Errors":["Request rate is large"]}
原因:使用的要求單位 (RU) 數目大於 Azure Cosmos DB 中設定的可用 RU。 若要了解 Azure Cosmos DB 如何計算 RU,請參閱 Azure Cosmos DB 中的要求單位。
解決:嘗試下列兩種解決方案之一:
- 在 Azure Cosmos DB 中提高「容器 RU」數目的值。 此解決方案可提升複製活動效能,但在 Azure Cosmos DB 中會增加成本。
- 降低 writeBatchSize 的值,例如 1000,降低 parallelCopies 的值,例如 1。 此解決方案會降低複製執行效能,但在 Azure Cosmos DB 中不會增加成本。
資料行對應中遺漏資料行
徵兆:匯入 Azure Cosmos DB 的結構描述來對應資料行時,遺漏某些資料行。
原因:Azure Data Factory 和 Synapse 管線根據前 10 個 Azure Cosmos DB 文件來推斷結構描述。 如果某些文件資料行或屬性沒有值,則偵測不到結構描述,也就不會顯示結構描述。
解決:您可以微調查詢,如下列程式碼所示,強制結果集以空白值顯示資料行值。 假設前 10 個文件中遺漏 impossible 資料行。 或者,您可以手動新增資料行來進行對應。
select c.company, c.category, c.comments, (c.impossible??'') as impossible from c
錯誤訊息: 讀取器的 GuidRepresentation 是 CSharpLegacy
徵兆:從具有通用唯一識別碼 (UUID) 欄位的 Azure Cosmos DB MongoAPI 或 MongoDB 複製資料時,發生下列錯誤:
Failed to read data via MongoDB client., Source=Microsoft.DataTransfer.Runtime.MongoDbV2Connector,Type=System.FormatException, Message=The GuidRepresentation for the reader is CSharpLegacy which requires the binary sub type to be UuidLegacy not UuidStandard.,Source=MongoDB.Bson,’“,
原因︰以二進位 JSON (BSON) 表達 UUID 有兩種方式:UuidStardard 和 UuidLegacy。 根據預設,UuidLegacy 會用來讀取資料。 如果 MongoDB 中的 UUID 資料是 UuidStandard,則會發生錯誤。
解決:在 MongoDB 連接字串中,新增 uuidRepresentation=standard 選項。 如需詳細資訊,請參閱 MongoDB 連接字串。
錯誤碼:CosmosDbSqlApiOperationFailed
訊息:
CosmosDbSqlApi operation Failed. ErrorMessage: %msg;.
原因:CosmosDbSqlApi 作業發生問題。 特別適用於 Azure Cosmos DB for NoSQL 連接器。
建議:若要查看錯誤詳細資料,請參閱 Azure Cosmos DB 說明文件。 如需進一步協助,請連絡 Azure Cosmos DB 小組。
錯誤碼:CosmosDbSqlApiPartitionKeyExceedStorage
訊息:
The size of data each logical partition can store is limited, current partitioning design and workload failed to store more than the allowed amount of data for a given partition key value.
原因:每個邏輯分割區的資料大小都受到限制,且分割區索引鍵達到邏輯分割區的大小上限。
建議:檢查您的 Azure Cosmos DB 分割區設計。 如需詳細資訊,請參閱邏輯分割區。
相關內容
如需更多疑難排解的協助,請嘗試下列資源: