stored-procedures - 将日期时间参数从管道传递到数据流源存储过程 Azure 数据工厂
问题描述
当我尝试将 datetime 参数从管道传递到数据流存储过程时,我遇到了这个问题。我使用存储过程来获取完整或增量数据集。管道看起来像这个 管道 在查找中我得到“n/a”或最后加载日期。确定我需要完全加载还是增量加载。之后,我使用以下表达式将其传递给数据流:
加载activity('GetLastLoadData').output.value[0].LastLoadedDate
开始日期 加载结束日期if(equals(activity('GetLastLoadData').output.value[0].LastLoadedDate, 'n/a'), '' ,pipeline().TriggerTime)
输出看起来不错,据我所知,数据流的参数是用日期时间字符串设置的:
Input
{
"dataflow": {
"referenceName": "dataflow1",
"type": "DataFlowReference",
"parameters": {
"LoadStartDate": "'2021-01-16 14:15:36.697'",
"LoadEndDate": "'2021-03-25T18:08:48.7558444Z'"
},
存储过程有两个参数定义为字符串。我正在做验证
CREATE PROCEDURE [dbo].[Export]
@LoadStartDate VARCHAR(30) = NULL,
@LoadEndDate VARCHAR(30) = NULL
AS
DECLARE @error VARCHAR(200) = NULL
IF (@LoadStartDate IS NULL AND @LoadEndDate IS NOT NULL) OR
(@LoadStartDate IS NOT NULL AND @LoadEndDate IS NULL)
SELECT @error = 'Parameters @LoadStartDate and @LoadEndDate should be specified.'
IF @LoadStartDate IS NOT NULL AND TRY_CAST(@LoadStartDate AS DATETIME2(3)) IS NULL
SELECT @error = 'Parameter @LoadStartDate is not a date.'
IF @LoadEndDate IS NOT NULL AND TRY_CAST(@LoadEndDate AS DATETIME2(3)) IS NULL
SELECT @error = ' Parameter @LoadEndDate is not a date.'
在管理工作室程序运行良好,但不是在 adf...
ADF 数据流有两个参数定义为字符串 ADF 参数
源的设置如下所示: 源设置
当我删除输入参数时,一切正常(作为满载),但是当我尝试指定参数时它失败了。
Error details
Error code
DFExecutorUserError
Troubleshooting guide
Failure type
User configuration issue
Details
{"StatusCode":"DFExecutorUserError","Message":"Job failed due to reason: Incorrect syntax near '-'.","Details":"Incorrect syntax near '-'."}
Source
Pipeline
LoadDataSetCompany_copy1
Data flow
dataflow1
Monitor
Data flow activity
LoadDataSet
在将参数传递给数据流期间,我也尝试选择表达式复选框,但它没有帮助。
有人知道出了什么问题吗?
赞赏答案。
解决方案
我与微软支持进行了讨论,在他们的帮助下我终于解决了这个问题。
在数据流中传递参数的表达式应类似于“'{$LoadStartDate}'”。以这种方式传递参数后,解析错误消失了。
同样在我的存储过程中,如果参数不包含适当的值,我会在参数验证后使用 t-sql throw。应该避免抛出,当我删除它时,数据流开始按预期工作。
希望这些信息能为某人节省时间。
推荐阅读
- javascript - 我正在尝试使用 ajax 在 laravel 中通过模态上传图像
- asp.net - 上传大文件时如何修复跨源资源共享 (CORS)
- compression - 如何在插入之前识别要解压缩的块?
- c++ - 逐元素初始化字符串会导致 TLE,但这种技术效果很好
- html - 表格的输出中有一些额外的框
- c# - C# 中联合数据类型的选项
- typescript - 打字稿中的界面模式
- java - java junit test:从属性文件动态加载值
- html - HTML 渲染大小差异(Chrome 和 FireFox)
- netsuite - NetSuite 保存的搜索:将替换公式添加到现有公式