2016-08-04 93 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