2016-08-04 110 views
0

在SSIS [VS 2012]中,是否有方法在繼續加載過程之前檢查URL是否有效?如果可能,我想分開有效和無效之間的URL列表,並只加載有效的URL。我已經創建了一個加載URL列表的包,但是我從無效URL收到歷史記錄中的錯誤,我想通過篩選出無效的URL來清除這些錯誤。例子將不勝感激!謝謝!SSIS - 檢查URL是否有效

+0

最好的辦法是做在一個編程語言,JAVA,C#等閱讀,然後每個URL檢查它是否有效,輸出所有有效到一個乾淨的文件SSIS加載。你可以在腳本任務中做到這一點,但大多數工作仍然是編程,所以最好將其留給編程語言。 – thotwielder

+0

加載URL後你的軟件包會執行什麼操作?您的軟件包如何從無效URL獲取歷史記錄中的錯誤? – thotwielder

+0

我正在使用我的XML源中的URL。因此,當源遇到不存在的URL時,它會失敗,並顯示錯誤「URL無法讀取XML數據:(404)Not Found」。我有軟件包安裝程序,如果失敗它將更新審計表,指出該URL無效。但是,我的架構師會審查包裹歷史記錄,即使處理過,這些錯誤仍然存​​在。如果我可以在加載之前檢查URL是否有效,我可以擺脫這些錯誤。 –

回答

1

我能夠通過使用腳本任務組件以及下面的C#代碼片段來實現上述目標。我通過一個變量傳遞了我的URL,並能夠查看它是否有效或無效。然後我根據這個設置我的優先約束。謝謝!

public void Main() 

    Dts.Variables["Found"].Value = UrlFound(Dts.Variables["URL1"].Value.ToString()); 
    Dts.TaskResult = (int)ScriptResults.Success; 

    private bool UrlFound(string url) 
    { 
     try 
     { 
      //Creating the HttpWebRequest 
      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
      //Setting the Request method HEAD, you can also use GET too. 
      request.Method = "HEAD"; 
      //Getting the Web Response. 
      HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
      //Returns TRUE if the Status code == 200 
      response.Close(); 
      return (response.StatusCode == HttpStatusCode.OK); 
     } 
     catch 
     { 
      return false; 
     } 

    } 
+0

我喜歡並且已經使用了這種方法,並且爲它進行了工作。我所做的唯一一件事情是使用組件而不是數據流之外的任務,這是因爲我正在處理的記錄數量而導致來自我聯繫的服務器之一的不正確響應。我最終變成了一個任務,然後通過幾個連接進行線程化,結果是性能更快,並且沒有阻止來自web服務器.... – Matt