【发布时间】:2020-08-07 14:02:17
【问题描述】:
我尝试在复制数据 Azure 数据工厂 (ADF) 工作流中使用一个非常大的查询。这是它的简化版本:
CREATE TABLE #tmp
(
Name VARCHAR(255)
,… --some other fields
);
INSERT INTO #tmp
(
Name
,… --some other fields
)
EXECUTE sp_getData
SELECT t.Name
FROM #tmp AS t
BEGIN TRY
DROP TABLE #tmp
END TRY
BEGIN CATCH
END CATCH
当我将此查询指定为我的 ADF 复制工作流程的“源”时,它会立即显示错误:
数据库操作失败并出现以下错误:'无效对象 名称“#tmp”。无效的对象名称 '#tmp'., SqlErrorNumber=208,Class=16,State=0, .活动编号: 707769bc-a864-4e15-8217-bec1ef9462bb
如果我直接在 SSMS 中运行此查询,它执行得很好,根本不会显示任何错误。但是,如果我在 ADF 创建向导中并单击“验证”按钮,它会显示错误消息,显示“正在加载预览”一段时间,然后按预期返回数据。如果我尝试单击“下一步”继续进行复制数据设置,它不会让我继续。不幸的是,它似乎没有指定查询中的哪一行导致错误,所以我不确定问题出在哪里。
为什么我会在 ADF 中收到此错误,而不是在 SSMS 本身中?我使用同一个帐户来执行查询,除了一个从 ADF 运行和一个直接从 SSMS 运行之外,我看不到任何差异。这是 ADF 的限制吗?我该如何解决这个问题?
【问题讨论】:
-
需要临时表吗?我猜它只是验证查询而不是实际运行它。我建议您在前面的步骤中填充一个永久表,然后在数据流中从中进行选择。
标签: sql sql-server azure azure-data-factory