我有一个非常大的查询,正在尝试在复制数据 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 复制工作流程的“源”时,它会立即显示错误:
A database operation failed with the following error: 'Invalid object name '#tmp'.' Invalid object name '#tmp'., SqlErrorNumber=208,Class=16,State=0, . Activity ID: 707769bc-a864-4e15-8217-bec1ef9462bb
如果我直接在 SSMS 中运行此查询,它执行得很好,根本不会显示任何错误。但是,如果我在 ADF 创建向导中单击“验证”按钮,它会显示错误消息,显示“正在加载预览”一段时间,然后按预期返回数据。如果我尝试单击“下一步”继续复制数据设置,它不会让我继续。不幸的是,它似乎没有指定查询中的哪一行导致了错误,所以我不确定问题出在哪里。
为什么我会在 ADF 中收到此错误,但在 SSMS 本身中却没有收到此错误?我使用相同的帐户来执行查询,除了一个是从 ADF 运行而一个是直接从 SSMS 运行之外,我看不到任何差异。这是 ADF 的限制吗?我该如何解决这个问题?
最佳答案
内部 #temp 表是在 tempdb 中创建的,但链接服务指向指定的数据库,因此出现此错误。
请使用表变量@temp table,它将正常工作。
关于sql - Azure数据工厂说临时表是 "Invalid object name"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61400888/