我有一个非常基本的 SSIS 包,其中包含一个数据流任务(从 OLE DB 源到平面文件)。
TransactionOption 属性设置为Required,我尝试将IsolationLevel 选项设置为ReadCommitted、ReadUncommitted 和Serializable。
该包将表 [TestTable] 中的所有行导出到平面文件。
我有以下 SQL 脚本(我目前正在 Management Studio 中运行):
BEGIN TRANSACTION
DELETE FROM [dbo].[TestTable]
DECLARE @SsisString VARCHAR(8000)
DECLARE @PackageName VARCHAR(200)
DECLARE @ServerName VARCHAR(100)
DECLARE @ReturnCode INT
SET @PackageName = 'TransactionalTestPackage'
SET @ServerName = 'SERVERNAME'
SET @SsisString = 'dtexec /sq ' + @PackageName + ' /ser ' + @ServerName + ' '
EXEC @ReturnCode = xp_cmdshell @SsisString
SELECT @ReturnCode
--COMMIT TRANSACTION
ROLLBACK TRANSACTION
请注意,我在运行包之前从表中删除了所有行,因此理论上包应该将零行导出到文件中,但实际发生的是包挂起(我认为是因为未提交的删除测试表)。问题是:以这种方式调用的 SSIS 包是否真的加入了从 SQL 块顶部开始的事务中,如果没有,可以吗?