我应该说我的脚本编程或面向对象编程语言的经验是有限的。在PowerShell中组装SSIS包
我正在研究使用PowerShell以编程方式创建和执行SSIS包的方法。不幸的是,PowerShell和SSIS可用的大部分资源都是从SSIS调用PS,而不是其他方式。
但是,我已经找到了许多用于创建SSIS包的VB/C#的资源。
我已经成功地通过调用DTS/SSIS组件转换大部分的代码,但它现在没有在TaskHost对象转换为mainpipe。
示例代码:
[Void][Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ManagedDTS')
[Void][Reflection.Assembly]::LoadWithPartialName('Microsoft.Sqlserver.DTSPipelineWrap')
# Create the Package and application, set its generic attributes
$Package = New-Object Microsoft.SqlServer.Dts.Runtime.Package
$Package.CreatorName = $CreatorName
$App = New-Object Microsoft.SqlServer.Dts.Runtime.Application
# Set connection info for our package
$SourceConn = $package.Connections.Add("OLEDB")
$SourceConn.Name = "Source Connection"
$SourceConn.set_ConnectionString("Data Source=$SourceServer;Integrated Security=True")
$TargetConn = $package.Connections.Add("OLEDB")
$TargetConn.Name = "Target Connection"
$TargetConn.set_ConnectionString("Data Source=$TargetServer;Integrated Security=True")
# Build the tasks
# Data Flow Task - actually move the table
[Microsoft.SQLServer.DTS.Runtime.Executable]$XferTask = $Package.Executables.Add("STOCK:PipelineTask")
$XferTaskTH = [Microsoft.SqlServer.Dts.Runtime.TaskHost]$XferTask
$XferTaskTH.Name = "DataFlow"
$XferTaskTH.Description = "Dataflow Task Host"
$DataPipe = [Microsoft.SQLServer.DTS.pipeline.Wrapper.MainPipeClass]($XferTaskTH.InnerObject)
一切正常,直到最后一行,当我得到的错误:
Cannot convert the "System.__ComObject" value of type "System.__ComObject#{}" to type "Microsoft.SqlServer.Dts.Pipeline.Wrapper.MainPipeClass"
任何帮助或想法,欢迎!
我是upvoting这个老问题,因为我不明白为什么它downvotes =/ – jadarnel27 2011-11-04 12:54:57
@ jadarnel27 - 他们主要是报复downvotes。我惹恼了一些人,他们低估了我所问过的几个问题(因为它可以自由下调问题)。我很欣赏你的公平感。 – JNK 2011-11-04 13:15:25