SQL Server 2008 R2 用の vb.net バージョン 4.0 でプログラムによって SSIS パッケージを作成していますが、SQL 実行タスクの作成に問題があります。タスクのコードは次のとおりです。
Public Sub CreateExecuteSQLTask()
Dim TaskHost = DirectCast(Package.Executables.Add("Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask, Microsoft.SqlServer.SQLTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"), Microsoft.SqlServer.Dts.Runtime.TaskHost)
TaskHost.Name = "Task"
TaskHost.Description = "Task Description"
Dim ExecuteSQLTask As Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask
ExecuteSQLTask = DirectCast(TaskHost.InnerObject, ExecuteSQLTask)
ExecuteSQLTask.Connection = DestinationDBConnectionManager.ID
ExecuteSQLTask.SqlStatementSource = "Select * from Employees"
End Sub
上記のコードを実行すると、TaskHost を Execute SQL コマンドにキャストするときに次の例外が発生します。
タイプ 'System.__ComObject' の COM オブジェクトをクラス タイプ 'Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask' にキャストできません。COM コンポーネントを表す型のインスタンスは、COM コンポーネントを表さない型にキャストできません。ただし、基になる COM コンポーネントがインターフェイスの IID に対する QueryInterface 呼び出しをサポートしている限り、インターフェイスにキャストできます。
以下の記事を参考にしました。
この問題を乗り越える方法を教えてください。