登台表是仅在数据仓库项目中使用还是在任何SSIS项目中使用?我想知道什么是临时表?谁能给我一些关于如何使用它以及在什么情况下实现它的例子?另外,我可以在使用它时了解最佳做法吗?
我们有一个 ETL 管道,它为上传到存储帐户 (Azure) 的每个 CSV 运行。它在 CSV 上运行一些转换并将输出写入另一个位置,也作为 CSV,并调用数据库 (SQL Azure) 上的存储过程,该过程将生成的 CSV 摄取 (BULK INSERT) 到一个临时表中。
该管道可以同时执行,因为多个资源可以将文件上传到存储。因此,临时表经常插入数据。
然后,我们有一个计划的 SQL 作业(弹性作业),它触发一个 SP,将数据从临时表移动到最终表中。此时,我们希望截断/清空临时表,以便我们不会在下次执行作业时重新插入它们。
问题是,我们无法确定在从暂存表加载到最终表和 truncate 命令之间,没有任何新数据写入暂存表可以在没有先插入最终表的情况下被截断。
有没有办法在我们将数据复制到最终表时锁定临时表,以便尝试写入它的 SP(从 ETL 管道调用)只会等到锁定被释放?这是否可以通过使用事务或一些手动锁定命令来实现?
如果没有,处理这个问题的最佳方法是什么?