我有一个执行各种动态sql语句的存储过程。 实际上,这个存储过程将使用各种参数从SSIS触发。 因此会有很多并行执行。
此存储过程在执行期间使用临时表。
我使用Select .. into
语句手动创建表,并在最后删除它们。
在并行执行期间,由于执行2尝试创建或使用与执行1相同的临时表,因此进程最终出错。这是错误的。
我尝试使用表变量来解决这个问题。但是,这在动态SQL中不起作用。 (How to use table variable in a dynamic sql statement?)
我尝试使用本地临时表解决此问题。然而,使用本地临时表的SSIS和存储过程并不是一个伟大的婚姻。到目前为止,我从未找到一个好的工作解决方案。http://consultingblogs.emc.com/jamiethomson/archive/2006/12/20/SSIS_3A00_-Using-stored-procedures-inside-an-OLE-DB-Source-component.aspx
我知道如何使用GUID的名称创建临时表。然后使用它,以便它在存储过程执行中是唯一的。但是,这确实会使我的动态SQL代码难以维护。
有没有人看到其他选项,还是我过于复杂?有更可行的解决方案吗?
答案 0 :(得分:0)
您可以将临时表创建为
创建表#tmp_execute ( id int, name varchar(50), ....... )
然后,执行动态查询
插入#tmp_execute 从tbl_Sample
中选择....如果您需要执行动态列,则可以使用' alter table #tmp_execute add your_column int'有条件的陈述。