我有3个SSIS包。 3个SSIS包中有2个完美地工作,第三个。哪个是第二个的副本,除了更改连接字符串不断引发问题:
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包似乎验证了我的容器,与其他两个相比,它需要很长时间才能完成此操作,然后在验证中失败并抛出上述错误消息。
答案 0 :(得分:4)
您无法复制软件包,但您还需要更改名称并为此软件包生成新的 GUID (标识COM对象)。有关详细信息,请查看this MSDN文章。
答案 1 :(得分:0)
我希望它可以帮助别人。解决方案对我有用:
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"
"C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SQLServer.DTSPipelineWrap.dll"
答案 2 :(得分:0)
如果这可能对某人有所帮助:由于错误的优化查询导致超时问题,导致出现此错误。 SSIS软件包没有任何内在的错误,一旦我在数据库源中解决了这个问题,它就可以正常运行。
答案 3 :(得分:0)
在我的情况下,这是一个验证重载/超时,该程序包包含对数百个表的引用。
打开有问题的数据流强制重新验证并清除错误。