1つのデータフロータスク(OLE DBソースからフラットファイルへ)を含む非常に基本的なSSISパッケージがあります。
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
パッケージを実行する前にテーブルからすべての行を削除していることに注意してください。理論的には、パッケージはゼロ行をファイルにエクスポートする必要がありますが、実際に起こっているのはパッケージがハングしていることです( TestTable)。質問は次のとおりです。この方法で呼び出されたSSISパッケージは、SQLブロックの先頭で開始されたトランザクションに実際に参加しますか?そうでない場合は参加できますか?