SSIS 2012 パッケージで、FTP サーバーからファイルを取得してローカル サーバーのハード ドライブに保存するスクリプト タスクを作成しました。次のようにスクリプト タスク s に記述したコード:
Public Sub Main()
'
' Add your code here
'
Const localFile As String = "C:\InboundOrders\*.*"
Const remoteFile As String = "/remote/folder/filename.pgp"
Const host As String = "ftp://ftp1.commerceub.com"
Const user As String = "ourusername"
Const pw As String = "ourpassword"
Dim URI As String = host & remoteFile
Dim ftp As System.Net.FtpWebRequest = CType(FtpWebRequest.Create(URI),
FtpWebRequest)
ftp.Credentials = New System.Net.NetworkCredential(user, pw)
ftp.KeepAlive = False
ftp.UseBinary = True
ftp.Method = System.Net.WebRequestMethods.Ftp.DownloadFile
Using response As System.Net.FtpWebResponse = CType(ftp.GetResponse,
System.Net.FtpWebResponse)
Using responseStream As IO.Stream = response.GetResponseStream
Using fs As New IO.FileStream(localFile, IO.FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0
Do
read = responseStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
responseStream.Close()
fs.Flush()
fs.Close()
End Using
responseStream.Close()
End Using
response.Close()
End Using
Dts.TaskResult = ScriptResults.Success
End Sub
パッケージを実行すると、次のエラーが表示されます。
DTS Script Task has encountered an exception in user code.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments,
Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr,
Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder
binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers,
CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder,
Object target, Object[] args, CultureInfo culture)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
上記のエラーを修正するにはどうすればよいですか? あなたの助けと指導に感謝します。
更新: 実際に FTP サーバー上にあるファイルをコードで指定しました。同じエラーが表示されます。私が取るべき別のアプローチはありますか?