我在控制流中有两项任务。第一个任务是在序列容器中并创建多个全局临时表。第二个任务使用这些临时表。这两个任务都在“执行 SQL 任务”中。它们都使用本机 OLE DB\SQL Server Native Client 11.0 驱动程序连接到 SQL Server。我将这两个属性都设置为 true。延迟验证并保留相同的连接。
当第一个序列容器运行时,我看到临时表在处于“黄色”或运行状态时通过 Management Studio 窗口创建。一旦第一个任务完成,它们就会变成绿色(完成),下一个任务将无法使用这些全局临时表。我也无法在管理工作室中看到这些表格了。
如何保留这些临时表,以便它们可以在后续任务中的同一 dtsx 任务中使用
我已经在上面解释过了
正如布拉德和你所写的那样,看来你做的一切都是正确的。
让我们尝试基本的复制,并让我知道这在您的环境中是否有效。我们将有一个两个任务包,都执行 SQL 任务
创建 OLEDB 连接管理器,并将
RetainSameConnection
设置为 True
第一个执行sql任务会创建全局临时表
DROP TABLE IF EXISTS ##SO_77411558;
CREATE TABLE ##SO_77411558
(
Col1 int
);
在第二个执行 SQL 任务中,我们将向表中添加一行
INSERT INTO ##SO_77411558
SELECT 3;
此时,我已经全面接受果岭了。
如果我在第二个执行 SQL 任务之后添加一个空的序列容器并在其上放置一个断点
然后我可以验证全局表是否保留,因为包尚未完成
sqlcmd -S .\dev2017 -E -d tempdb -Q "SELECT T.name FROM sys.tables AS T WHERE T.name like '%SO%'"
name
-----------------
##SO_77411558
(1 rows affected)