我一直在努力解决这个问题。我已经阅读了很多关于这个主题的类似问题,但我是新手,我正在阅读#34;希腊语给我"。也许有人会愿意在这个阶段帮助我。我创建了一个包含几个步骤的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文件的第一步是运行,但不会提取任何数据。 Job Activity Monitor表示它很成功。
我不知道下一步该做什么。对我来说很容易。我是新人。
答案 0 :(得分:0)
虽然如果你没有收到错误肯定会有权限问题,但是它会表明代码没有执行。查看您在代码中放置代码的位置我认为您完全没有在SUB
中调用Main () Sub
。创建新脚本时,您应该看到类似的内容:
Public Sub Main()
'
' Add your code here
'
Dts.TaskResult = ScriptResults.Success
End Sub
基本上它说的是在这里添加你的代码是微软引导你添加脚本的地方。在你自己的sub中完成它是完全可以的,但如果你这样做,你需要像Main() SUB
那样调用你的sub:
Public Sub Main()
'
' Add your code here
'
HealthSmart()
Dts.TaskResult = ScriptResults.Success
End Sub
如果您确实拥有Main SUB
并且正在调用您的代码。 wsftppro.exe 中可能存在错误。您是否在脚本之外运行代码?
如果权限导致exe内的问题而不是错误,您可以尝试通过您的开发环境作为有权访问位置的用户运行,如果它成功,那么您可能需要SQL代理的权限和/或服务帐户。