在 ADF 复制活动中使用托管身份连接到 CosmosDB 源时忽略“检测日期时间”设置

问题描述 投票:0回答:1

在多个 Azure 数据工厂管道中,其中一项活动是“复制活动”,它使用 Azure Cosmos DB for NoSQL 作为源,并使用 JSON 格式 作为接收器的 Azure Data Lake Storage Gen2。 CosmosDB 中存储的日期使用各种日期时间偏移,例如2023-11-02T00:00:00-04:00 并保留日期偏移量,复制活动源未选中

Detect Datetime
(如
此处
此处所述。此配置工作正常,并且这些活动生成的 Json 文件确实保留了日期时间偏移量。如果此复选框/属性保持选中状态,所有日期时间都会转换为 UTC 偏移量,例如,2023-11-02T00:00:00-04:00 将变为
2023-11-02T04:00:00+00:00
,这是准确的日期时间即时值,但偏移量会丢失,这就是 CosmosDB 所在的所有复制活动的原因。源代码未选中此属性,这在代码中显示为
"detectDatetime": false
"source": {
    "type": "CosmosDbSqlApiSource",
    "preferredRegions": [],
    "detectDatetime": false
},

用于连接到 CosmosDB 的链接服务正在使用从密钥保管库获取的密钥。为了减少配置和密钥轮换的麻烦,我们正在切换到
系统分配的托管身份验证

。一切正常,除了 Detect Datetime 设置被完全忽略,并且 JSON 接收器中的所有日期都“转换”为 UTC 偏移量。显然,管道比仅一个复制活动复杂得多,但这种行为已通过两个简单的管道单独得到证实,每个管道仅使用一个复制活动,以 CosmosDB 作为源,以 JSON 格式作为接收器的 Data Lake Gen2。唯一的区别是,一种对 CosmosDB 使用基于密钥的身份验证,而另一种则使用基于托管身份的身份验证。是否有 UI 中未公开的属性需要传递?

    

azure-data-factory azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

我们已就此行为与产品团队进行了协商,并且 在我们的环境中复制后,他们确认这是一个 使用系统管理身份验证时的已知问题。在这个 场景中,Azure 数据工厂 (ADF) 默认使用 SDK V3 来执行 复制活动,且该版本的SDK不支持Detect SDK 级别的日期时间。 Account Key不使用SDK V3, 这就是为什么在这种情况下检测日期时间受到尊重。

我们已将您的意见分享给产品团队,他们将 进行进一步测试以确定并实施修复。现在, 没有预计到达时间 (ETA),并且该产品 团队表示,目前,确保检测的唯一方法 DateTime 是通过使用帐户密钥选择方法来实现的。

© www.soinside.com 2019 - 2024. All rights reserved.