使用SSIS我需要从网络/域外的服务器检索数据。 我只能通过VPN访问此服务器。 我创建了2个包:
当我直接使用已经启动的VPN运行包2时,此包运行良好。 当我从包1运行包2而没有启动VPN的任务但手动启动VPN时,这个包运行良好。
但是,如果我从包1调用此包,它将失败并显示错误: AcquireConnection方法调用连接管理器" MyConnection"失败,错误代码为0xC0202009。 VPN是否已经启动并不重要。
如何在程序包执行期间只运行VPN来运行程序包2?
答案 0 :(得分:3)
我解决了! 我需要在package1(启动VPN)和package2(执行导入)之间添加一个等待 设置VPN后,使package1等待5秒后再继续。现在一切都工作了:)
SO:包含VB脚本的包1用于启动(现有)VPN:
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调用包2进行实际导入
用于关闭VPN的VB脚本任务:
Dim VPNConnectionName As String = "MyConnection"
Shell("RASDIAL " & Chr(34) & VPNConnectionName & Chr(34) & " /DISCONNECT", vbNormalFocus)
'
Dts.TaskResult = ScriptResults.Success