我需要在执行Azure Data Factory Pipeline时在SQL Server中创建一个全局临时表。该表将用于多个活动。
我已经尝试了几种方法,其中包括使用针对sys.sp_executesql
SP和CREATE TABLE
语句作为参数的存储过程活动。使用这种方法,该表实际上是创建的,但是它是自动删除的,我不明白为什么。
这是用于创建温度表的脚本:
CREATE TABLE ##tempGL
(
GLAccount NVARCHAR(15),
GLSubAccount NVARCHAR(15)
)
那么,如何从Azure数据出厂管道活动中创建一个SQL Server温度表,直到我删除它?
我自己一直在为此挣扎。显然,这是通过设计(请参阅下面的Microsoft员工的引文(,即使文档提到了可能的可能性,也无法使用Azure Data Factory实现此目的。
是设计。我们不会在2个活动之间保持联系。 如果使用真实表代替临时表。然后,您将获得预期的结果。 如果数据需要超过1个活动才能访问,则该建议不使用ADF中的临时表。
https://github.com/microsoftdocs/azure-docs/issues/35449#issuecomment-517451867
发生这种情况的原因是当管道活动结束时会删除会话,这导致临时表也被删除。
创建表结束的会话并且所有其他任务都停止引用它们时,将自动删除全局临时表。任务与表之间的关联仅在单个Transact-SQL语句的使用寿命中维持。这意味着在最后一个Transact-SQL语句的完成时删除了一个全局临时表,该声明在创建会话结束时积极引用该表。
https://learn.microsoft.com/en-us/sql/t-sql/statement/create-table-transact-sql?view=sql-sql-server-server-2017#temporary-tables
希望Microsoft在某个时候对此进行了修复,并可以使用Azure Data Factory在活动中使用临时表。
我在这里提出了这一点作为Azure的建议。
对于阅读本文可能想要他功能的任何人,请提高建议。