2016-03-08 202 views
1

我有3个SSIS包。第三个SSIS包中有两个完美地工作。这是第二次的副本之一,除了改变连接字符串不断抛出问题:无法将类型为'System._COMObject'的COM对象转换为接口类型

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{D4E5AF42-7999-473C-8082-6EFC676953C4}' failed due to the following error: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)). 

已经这样做自从我复制来的包了。我已经通过在线指南,并运行regsvr32 dts.dll,这表示它是成功的,但没有任何改变。我仍然得到错误,为什么?

SSIS包似乎验证我的容器,与其他两个相比,这需要很长时间才能完成,然后在验证中抛出上述错误消息后失败。

回答

1

您不能复制软件包,但需要另外更改名称并为此软件包生成新的GUID(它标识COM对象)。有关更多信息,请参阅this MSDN文章。

+0

我的第二个包是第三个不同连接字符串的副本,它工作正常。我将在明天创建一个新包,并将逻辑复制过来。干杯。我会让你知道它是如何变成 –

+0

这并没有解决我的问题 –

0

我希望它可以帮助别人。该解决方案为我工作:

  1. 我注册程序集使用gacutil.exe。我的SSIS项目目标服务器版本是SQL 2012.所以,我使用的是DTSPipelineWrap.dll版本11.0。我在管理员模式下打开"Developer Command Prompt for VS2015",然后键入以下命令:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe /i "C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.DTSPipelineWrap.dll"
  2. 从我的SSIS脚本任务,参考
  3. 然后 - >我删除现有DTSPipelineWrap这是使用从位置装配“C:\ Program Files文件(86 )\ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.DTSPipelineWrap.dll“。然后在参考文件夹中,右键单击 - >添加参考 - >浏览从位置查找组件"C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SQLServer.DTSPipelineWrap.dll"
  4. 单击确定。重建代码并执行包。它为我工作。
相关问题