我有一个简单的SSIS包,它加载一个包含100000行的虚拟文件。每一行大约有4k长,一个int列和一个长文本列。当将这些数据加载到具有聚集索引的表中时,我正在尝试测试TF610。
在我的SSIS包中,我的控制流有一个执行SQL任务来启用TF610,然后在成功的情况下转到我的数据流任务,它将平面文件加载到表中。Execute SQL和OLE DB目标都使用相同的连接。
如果我在运行SSIS包时启动配置文件,并观察命令,我可以看到DBCC (610)执行,那么INSERT批量操作就开始启动。它们都使用相同的PID,所以我假设它是同一个会话。
但是,当我检查日志记录长度时,插入并不是最少记录的。
如果我全局启用TF610并运行相同的SSIS包,尽管事务记录最少。
当我打开我的SSIS包中的TF610时,我肯定做错了什么,但是我不知道.
发布于 2013-04-05 18:41:29
因此,为了强制使用相同的会话,在您的连接管理器中,在属性设置下,您可以将RetainSameConnection
设置为True
,以强制您的包使用单个连接,而不是使用池。
发布于 2013-04-05 17:51:43
仅仅因为它重用相同的会话id并不意味着您的跟踪标志仍然被设置。如果SSIS断开和重新连接,它可能得到相同的SPID,但它不再是相同的会话。我可以通过打开一个新的查询窗口、设置跟踪标志、快速关闭窗口并打开一个新的窗口(我得到相同的spid)来轻松地在SSMS中再现这一点。当我使用DBCC TRACESTATUD(610);
检查标志时,它不再被设置。
您可能必须找到一种方法来在数据流任务中设置跟踪标志,或者在包的持续时间内全局设置它。
DBCC TRACEON(610, -1);
https://dba.stackexchange.com/questions/39349
复制相似问题