Azure数据工厂:源数据集具有一个存储过程,该存储过程具有用户定义的表类型

艾米

我有一个存储过程,该存储过程接受用户定义的Table类型作为参数。我想在Azure数据工厂的复制数据活动的源数据集中使用此SP。我看到了一些示例,在这些示例中,我们可以在接收器数据集中使用用户定义的表类型,但不能与源数据集一起使用。

是否可以执行以用户定义的表类型为参数的SP,以将数据从SQL中取出并通过Blob存储进行复制?

这是我的SP:

CREATE PROCEDURE [export].[up_get_qnxt_enrollment_date]
      @effectiveDate DATETIME
     , @lobPlanDimIDs export.intList READONLY
AS
BEGIN
 ......
END

export.intList是用户定义的表类型:

CREATE TYPE [export].[intList] AS TABLE(
    [Id] [int] NULL,
    [Name] [varchar(256)] NULL
)

我无法在Azure DF的源数据集中设置此参数。我尝试将其设置为JSON数组,但没有运气:

"typeProperties": {
                    "source": {
                        "type": "AzureSqlSource",
                        "sqlReaderStoredProcedureName": "[export].[up_get_qnxt_enrollment_date]",
                        "storedProcedureParameters": {
                            "effectiveDate": {
                                "type": "DateTime",
                                "value": "2004-01-01"
                            },
                            "lobPlanDimIDs": {
                                "type": "export.intList",
                                "value": [
                                    {
                                        "Id": {   "type": "int",  "value": 1   },
                                        "Name": {  "type":  "String", "value": "ABC" }
                                    },
                                    {
                                        "Id": {   "type": "int",  "value": 2   },
                                        "Name": {  "type":  "String", "value": "DEF" }
                                    }
                                ]
                            }
                        },
                        "queryTimeout": "02:00:00"

我是否缺少任何东西,或者Azure DF中尚不提供此功能?

更新:根据Martin Esteban Zurita的建议,我使用了查询而不是SP。这是一个很好的解决方法。我还创建了一个功能请求:支持Azure DF for Source中的用户定义表

如果需要此功能,请进行投票。

马丁·埃斯特万·祖里塔

对于基于配置的方法,您可以从实用的文章中查看此博客条目:https : //blog.pragmaticworks.com/using-stored-procedure-in-azure-data-factory

当我遇到此问题时,解决问题的方法是使用查询而不是使用存储过程 在此处输入图片说明

然后像在sql命令行中一样调用查询,例如:

DECLARE @tmp DATETIME
SET @tmp = GETDATE()
DECLARE @lob AS intList
insert into @lob (Id, Name) select 1, 'ABC'
insert into @lob (Id, Name) select 2, 'DEF'
EXEC [up_get_qnxt_enrollment_date] @tmp, @lob

希望这对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有用户定义类型参数的Powershell存储过程

如何创建过程从具有用户插入数据的三个表中检索数据

具有xml数据的存储过程

Azure数据工厂存储过程

建立一个SSRS数据集,该数据集可查询依赖于存储过程的结果的数据,该存储过程创建了一个临时表来存储结果?

将具有存储过程的数据插入具有共享标识主键的表中时出错

如何从另一个存储过程调用具有两个OUTPUT参数的存储过程

仅返回具有存储过程的数据库名称

具有存储过程的SSRS报告数据集和按月汇总-如何处理“空”月?

调用具有一个变量和没有变量的重载存储过程

如何在RDLC报表中检索一个存储过程返回多个表的数据集

具有不同返回类型的实体框架数据库优先存储过程

带有用户定义异常的 oracle 更新存储过程

SQL Server:将数据表传递给具有空值的存储过程

具有用户定义的字符串文字的基础字符数据的存储持续时间

创建一个存储过程,以便将具有相同键的行转换为列

执行具有多个结果集的存储过程

带有接收器存储过程的 Azure SQL 数据工厂复制活动

具有现有数据库和具有多个源的类的实体框架与手动存储过程

ARM模板中的Azure数据工厂复制数据活动SQL Sink存储过程和表类型的参数

具有jsonb类型的plv8存储过程

在SQL存储过程中使用用户定义的表-无效的数据类型

使用csv文件中的数据使用用户定义的表类型测试存储过程

存储过程-从具有联接的表中删除

从具有不同版本的存储过程插入表

存储过程中具有多个联接的UPDATE表

具有动态表名的 Oracle PL/SQL 存储过程

如何传递一个用户定义的类型作为输入到存储过程?

在Azure数据工厂中使用SQL存储过程与数据块