私はこの問題に苦労し、苦労しました。このトピックに関する多くの同様の質問を読みましたが、私はこれが初めてで、「Greek to me」を読んでいます。おそらく、誰かがこれで初歩的なレベルで私を助けてくれるでしょう. いくつかの手順で SSIS パッケージを作成しました。最初のステップは、VB8 スクリプトを使用して SFTP サーバーからデータを取得するスクリプト タスクです。スクリプトは次のようになります。
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Enum ScriptResults
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum
Public Sub HealthSmart()
Dim Path As String, Path2 As String ', fileName As String, fo As Object, x As Object, y As Object, z As Object, rs As Object
Path = "\\RENYSQL1\share\Health_Smart\Received_Files\Test"
Path2 = "\\RENYMstr1\shared\CLIENT FOLDERS\HEALTHSMART\Original_PDF_Files\Test"
Shell("""C:\Program Files (x86)\Ipswitch\WS_FTP 12\wsftppro.exe"" -s ""Health_Smart:/Test/AMC_Test/*.pdf"" -d ""local:" & Path & "\"" -quiet", vbMaximizedFocus)
Shell("""C:\Program Files (x86)\Ipswitch\WS_FTP 12\wsftppro.exe"" -s ""Health_Smart:/Test/AMC_Test/*.pdf"" -d ""local:" & Path2 & "\"" -quiet", vbMaximizedFocus)
Dts.TaskResult = ScriptResults.Success
End Sub
End Class
ステップがSSISパッケージで実行されると、完全に正常に実行されます。SSIS パッケージを MSDB にインポートして実行パッケージを選択しても、エラーなしで実行されます。しかし、ジョブのステップとしてスケジュールすると、完全に実行されたかのように動作します。しかし、最初のステップではデータが取得されませんでした。
SSIS パッケージのアクセス許可を、すべてに対する完全なアクセス許可を持つユーザーに設定しようとしました。また、パスワードなしでパッケージ保護レベルを DontSaveSensitive に設定してみました。
SQL ジョブ側では、ジョブで Windows 認証を使用し、前述のログインを使用してパッケージを実行しようとしました。どちらも機能しませんでした。さらに、32ビットで実行するように変更しましたが、役に立ちませんでした。
SQL ジョブが SQL エージェントによって実行されることを理解しています。エージェントには特定のログインがありますか? 私の部署の人々はノーと言います。
奇妙なことに、ジョブの実行をスケジュールすると、ジョブが実行され、成功したと表示されます。ただし、上記のスクリプトを使用して SFTP ファイルを取得する最初のステップは実行されますが、データはプルされません。ジョブ アクティビティ モニターには、成功したと表示されます。
次に何をすべきかわかりません。私に優しくしてください。私はこれが初めてです。