네트워크 드라이브를 매핑해야합니다. 여기에 제가 사용하는 예제가 있습니다 지금 :
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를 사용하고 매핑 된 드라이브를 통해 파일에 액세스하십시오.
나는 이주 드라이브에 액세스하고 드라이브 사이에 복사/이동 작업을 수행하는 새로운 스크립트를 하나의 문제를 (어느 날 여기 LED) 데 내가 말한다 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()
을
이것은 프로세스의 "두 번째 실행"에만 있으며 세 번째로 실행하면 연결이 제대로 닫히지 않았거나 복사/이동을 기다리지 않고 모든 작업이 정상적으로 작동합니다. 앞으로 이동하기 전에 완료하거나이 오류를 방지하는 "닫기"또는 "플러시"명령을 찾을 수 없습니다. 어떤 해결책이 있다면 알려주십시오. 그러나 위의 코드는 대체 자격 증명을 사용하여 드라이브를 매핑하고 해당 공유에 액세스 할 수있게 해줍니다.
자크는
왜 그냥 패키지를 실행하는 사용자 또는 프로세스에 필요한 권한을 부여 할 수 없습니다를 "프로세스 실행 작업"? 왜 그런 제한이 있는지 설명하면 더 나은 대답을 얻을 수 있습니다. 그동안 NET USE는 어떻습니까? – Pondlife
우리는 권한이있는 사용자로 실행하려고합니다. 문제는 그것이 AS400의 매핑 된 드라이브이며 일반적으로 AS400에서 지원되지 않는 10 자 이상의 이름과 밑줄이있는 계정으로 모든 작업을 실행한다는 것입니다. 우리는 일관성을 위해 동일한 계정으로이 작업을 실행하고 다른 계정의 400으로 인증하기를 바랬습니다 ...하지만 그만큼 가치가 없다고 생각하고 있으므로 포기할 것입니다. – nosirrahcd