SQL Server 是否可以在 Azure Synapse 中用作模式漂移的接收器?

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

我的工作负载具有高度可变的架构。我已经成功地将它以 CDM 格式加载到 ADLS 中,并且能够从我的数据流中访问数据并写回 CSV。

尝试写入 SQL 数据库时,我收到以下错误:

我考虑过使用集成数据集,但这需要我对不适合我的用例的表名进行硬编码。

数据流是否支持使用 SQL 数据库作为接收器?或者我需要使用管道吗?

azure etl azure-synapse
1个回答
0
投票

数据流支持使用SQL数据库作为sink 您收到的错误消息表明接收器转换无法确定目标表的模式。 但是请参考以下文档 https://learn.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database?tabs=data-factory#using-always-encrypted

我已尝试解决此问题,使用接收器转换中的“映射”选项卡将数据流中的列映射到目标表中的列。 这将允许接收器转换确定目标表的架构并将数据写入其中。 EMP 表有一个加密列。

enter image description here

工资一栏是加密的

enter image description here

您可以看到来自 ADLS(源)和 SQL 数据库的数据流图像(汇)

enter image description here

考虑您的来源的来源设置:

enter image description here

同样从上图中你甚至可以看到允许模式漂移复选框也被启用。 在源端检查投影选项卡下的映射。

enter image description here

在水槽设置中考虑:

enter image description here

在接收器映射中,您可以禁用自动映射并将源映射到接收器映射。

enter image description here

使用数据预览选项检查映射是否正确。

现在创建新管道,将数据流添加到管道中并触发/调试管道以检查管道结果。

enter image description here

当我尝试在加密列时使用数据流时,例如在我的例子中,我将 SALARY 列加密为 Deterministic 并在尝试将数据移动到 SQL 数据库时注意到。我注意到数据类型不匹配,所以根据要求我更改了 SALARY 列的数据类型。

您仍然想维护加密列,您可以按照以下步骤操作:

  • 解密源数据库中现有的加密列值。 从源数据库导出解密的列值。

  • 从源数据库中导出解密的列值。

  • 为加密创建具有所需数据类型的相同表
    目标数据库中的列。

  • 将解密的列值导入目标中的新表
    数据库。

  • 使用加密法对新表中的列值进行加密
    您要在目标数据库中使用的函数。

你还有问题,你可以尝试使用带有复制活动的管道将数据写入 SQL 数据库。 资料来源:

enter image description here

水槽:

enter image description here

使用导入模式选项或创建新映射。

enter image description here

发布您的更改并触发/调试您的管道以将数据移动到 SQL 数据库。

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