sql-server – 在PowerShell中组装SSIS包
我应该在前言中说我在OOP语言中使用脚本或编程的经验是有限的.
我正在研究一种使用PowerShell以编程方式创建和执行SSIS包的方法.不幸的是,PowerShell和SSIS可用的大部分资源都是用于从SSIS调用PS,而不是相反. 但是,我已经为VB / C#找到了许多用于创建SSIS包的资源. Example resource here. 我通过调用DTS / SSIS程序集成功地转换了大部分代码,但是现在在将TaskHost对象转换为主管道时失败了. 示例代码: [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) 当我收到错误时,一切正常,直到最后一行:
欢迎任何帮助或想法! 解决方法Microsoft.SqlServer.DTSPipelineWrap大量使用COM实例.这篇论坛帖子建议使用CreateWRapperOfType方法: 你可以试试这个: $DataPipe = [System.Runtime.InteropServices.Marshal]::CreateWrapperOfType($XferTaskTH.InnerObject,[Microsoft.SQLServer.DTS.pipeline.Wrapper.MainPipeClass]) 不会出错并产生一个对象 – 我不确定是什么类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |