2

使用 SSIS,我需要从我的网络/域之外的服务器检索数据。我只能通过 VPN 访问该服务器。我创建了 2 个包:

  1. StartVPN - 使用一些 VB 这个包启动 VPN。效果很好。:)
  2. 导入文件 - 这个包是从 StartVPN 调用的,应该导入一些数据。

当我在 VPN 已经启动的情况下直接运行包 2 时,这个包运行良好。当我从包 1 运行包 2 时,没有启动 VPN 的任务,但手动启动了 VPN,这个包运行良好。

但是,如果我从包 1 调用此包,则会失败并出现错误:对连接管理器“MyConnection”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。VPN是否已经启动并不重要。

如何仅在包执行期间运行 VPN 运行包 2?

4

1 回答 1

3

我解决了!我需要在 package1(启动 VPN)和 package2(进行导入)之间添加一个等待 设置 VPN 后,package1 在继续之前等待 5 秒。现在一切正常:)

SO:包 1 包含一个用于启动(现有)VPN 的 VB 脚本:

Dim VPNConnectionName As String = "MyVPN"
Dim VPNlogin As String = "MyUser"
Dim VPNPassword As String = "MyPass"

Shell("RASDIAL " & Chr(34) & VPNConnectionName & Chr(34) & " " & VPNlogin & " " & VPNPassword, vbNormalFocus)
        '
System.Threading.Thread.Sleep(5000)
Dts.TaskResult = ScriptResults.Success

然后从 package1 调用 package 2 进行实际导入

还有一个用于关闭 VPN 的 VB 脚本任务:

Dim VPNConnectionName As String = "MyConnection"

Shell("RASDIAL " & Chr(34) & VPNConnectionName & Chr(34) & " /DISCONNECT", vbNormalFocus)
            '
Dts.TaskResult = ScriptResults.Success
于 2014-07-02T11:14:02.420 回答