ネットワークドライブをマップする必要があります。今:そこから
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)
はただドライブ文字とマップされたドライブを介してファイルにアクセスすることを使用します。
私は2つの共有ドライブにアクセスして、ドライブの間にいくつかのコピー/移動操作を実行し、新しいスクリプトで(ここでは私を導いた)1つの問題を抱えていると私は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()
を
これはプロセスの2回目の実行時にのみ実行され、3回実行するとすべて正常に動作するため、接続が正しく閉じられていないか、コピー/移動を待っていません先に進める前に完了していますが、私はこのエラーを防ぐ "close"または "flush"コマンドを見つけることができません。解決策がある場合は教えてください。しかし、上記のコードは、代替の資格情報を使用してドライブをマップし、その共有にアクセスできるようにするために有効です。
ザック
なぜあなただけのパッケージを実行しているユーザーまたはプロセスに必要な権限を与えることはできませんが、「プロセス・タスクを実行しますか」?あなたがなぜその制限を持っているのか説明すれば、より良い答えが得られるかもしれません。その間、NET USEはどうですか? – Pondlife
権限を持つユーザーとして実行する予定です。問題は、AS400上でマップされたドライブであり、AS400ではサポートされていない、名前に10文字以上のアンダースコアを持つアカウントを使用して、通常はすべてのジョブを実行するということです。一貫性のために、同じアカウントでこのジョブを実行し、他のアカウントの400で認証することを望んでいました...しかし、それは価値がないと考えているので、あきらめるだけです – nosirrahcd