2016-08-24 125 views
3

我想从vb6应用程序执行一个简单的SSIS包。 我可以从c#执行相同的包。不能从vb6执行SSIS包

这是我在VB6代码:

pkgLocation = "c:\Package.dtsx" 
    Set dtsApp = New Application 


    Set package = dtsApp.LoadPackage(pkgLocation, True, Nothing) 
    Set pkgContainer = package 

    pkgResults = package.Execute 

    If (pkgResults = 0) Then 
    MsgBox "Success" 
    Else 
    MsgBox "Fail" 
    End If 

在我的日志文件,我看到这个错误: 将执行的任务的方法返回错误代码0x80131621(混合模式组件对版本“V2内置。 0.50727“,不能在没有附加配置信息的情况下在4.0运行时加载)。 Execute方法必须成功,并使用“out”参数指示结果。

我我的C#程序我要补充一个App.config文件,以解决同样的错误:

<?xml version="1.0"?> 
    <configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

但我怎样才能做到从VB6应用程序一样吗?

编辑1:

在我的VB6项目我使用这个引用:

C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 120 \ DTS \ BINN \ DTS.DLL - 微软DTS运行1.0 C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 120 \ DTS \ BINN \ MsDtsSrvrUtil.dll - DTS服务器9.0类型库

SSIS包用做:SQL Server数据工具为Visual Studio 2013

感谢您的帮助。

回答

1

我发现这个职位Using app.config with Interop Controls

在短期解决办法:如果我的exe文件VB6 ES称为VB6.EXE,我需要把在同一目录下的文件VB6.EXE App.config文件,但改名VB6.exe.config

+0

如下所示,认为它可能是一个应用程序路径错误。现在工作正常吗? –

0

您调用该对象的版本比您试图打开它的版本更旧/更新。

您需要在项目/引用下的应用程序中引用正确的版本对象。

+0

你好安德烈,我编辑帖子,以显示什么是我使用的参考。我不知道什么是正确的参考。 SSIS包是用Sql Server Data Tools for Visual Studio 2013制作的。 – Gringo

+0

看看这个链接,有点过时,只是在做参考时改成.Net 4.0。当然,这将解决... https://msdn.microsoft.com/en-us/library/aa719110(v=vs.71).aspx –

+0

我试图用你给我的链接,仍然不工作 – Gringo