2017-06-08 82 views
0

在For循環容器中,我下載了一個包含腳本任務的文件,然後與另一個腳本任務一起檢查了它的大小。當我通過SSDT執行它時,在開發服務器上,它會成功執行。當我將它運行到與作業相同的服務器或臨時執行時,它會掛起(下載第一個文件後)。這兩個腳本任務都嘗試使用&捕獲,並通過SQL Server代理執行作業。日誌記錄爲DownloadFile腳本任務的ForLoop &顯示PreExecute,其餘爲Pre/post驗證。在腳本下方。有什麼想法嗎?程序包掛在腳本任務C#

#region Namespaces 
using Microsoft.SqlServer.Dts.Runtime; 
using System; 
using System.Data; 
using System.IO; 
using System.Windows.Forms; 
#endregion 

namespace ST_7b3b944d502f476a871b7fa26cddac6e 
{ 
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] 
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase 
    { 

     public void Main() 
     { 
      try{ 
      string file = Dts.Variables["User::v_Filename"].Value.ToString(); 
      string Path = Dts.Variables["$Project::p_path"].Value.ToString(); 

      FileInfo filesize = new FileInfo(file); 
      long size = filesize.Length; 

       if (size > 100) 
        { Dts.Variables["User::EmptyFile"].Value = false; 
        } 
        else 
        { 
         Dts.Variables["User::EmptyFile"].Value = true; 
        } 
         } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 
     } 

     #region ScriptResults declaration 
     enum ScriptResults 
     { 
      Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success, 
      Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure 
     }; 
     #endregion 

    } 
} 
+0

SQL代理作業是否與在SSDT中運行它的用戶一樣運行?當你在SSDT中運行它時,是在SQL Server上還是在不同的機器上?你使用映射驅動器還是UNC?下載的代碼是什麼樣的? –

回答

0

在上一個腳本任務中有一個與控制檯相關的代碼。這會導致程序包掛起,並且不會顯示爲調試過程中的錯誤/警告。