我正在为 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 调用,它们就可以转换为接口。
我使用了以下文章作为参考:
请告知我如何解决这个问题。