您必须映射网络驱动器,这是我现在正在使用的示例:
profile = "false"
landingPadDir = Dts.Variables("strLandingPadDir").Value.ToString
resultsDir = Dts.Variables("strResultsDir").Value.ToString
user = Dts.Variables("strUserName").Value.ToString
pass = Dts.Variables("strPassword").Value.ToString
driveLetter = Dts.Variables("strDriveLetter").Value.ToString
objNetwork = CreateObject("WScript.Network")
CheckDrive = objNetwork.EnumNetworkDrives()
If CheckDrive.Count > 0 Then
For intcount = 0 To CheckDrive.Count - 1 Step 2 'if drive is already mapped, then disconnect it
If CheckDrive.Item(intcount) = driveLetter Then
objNetwork.RemoveNetworkDrive(driveLetter)
End If
Next
End If
objNetwork.MapNetworkDrive(driveLetter, landingPadDir, profile, user, pass)
从那里只需使用该 driveLetter 并通过映射的驱动器访问文件。
我遇到了一个问题(导致我来到这里),该脚本访问两个共享驱动器并在驱动器之间执行一些复制/移动操作,我从 SSIS 收到一条错误消息:
This network connection has files open or requests pending.
at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
at ScriptTask_3c0c366598174ec2b6a217c43470f581.ScriptMain.Main()
这只是在进程的“第二次运行”,如果我第三次运行它,一切正常,所以我猜连接没有正确关闭或者它没有等待复制/移动在前进或类似之前完成,但我无法找到防止此错误的“关闭”或“刷新”命令。如果您有任何解决方案,请告诉我,但上述代码应该可以使用您的备用凭据获取驱动器映射,并允许您访问该共享。
扎克