在SSIS中没有标准的控制流任务用于通过HTTP下载文件。我尝试了一些变通方法(执行进程wget, 脚本任务HttpClientConnection),但得出的结论是,最强大且可重用的方法是创建自定义组件。
我尝试按照Ray Gorski的指南进行操作,但在我的开发环境中遇到了问题。
问题是Visual Studio 2008无法识别Microsoft.SqlServer.Dts
命名空间。它会报错,并显示错误消息:“名称空间'Microsoft.SqlServer'中不存在'Dts'类型或命名空间(是否缺少程序集引用?)”。
ManagedDTS.dll
来添加引用,该文件位于C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\
中,但是我的系统上不存在此目录。我认为这是因为我使用的是SQL Server 2008而不是SQL Server 2005。
我该如何解决这个问题?
这是我的代码,基于Ray Gorski指南中的示例。这里没有实际完成任务的代码,只有一个空的存根,无法编译。
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Design;
namespace HTTPControlTask
{
[DtsTask(
Description = "HTTP",
DisplayName = "HTTP",
TaskContact = "Iain Elder",
TaskType = "SSIS Help Task",
RequiredProductLevel = DTSProductLevel.None)]
public class HTTPControlTask : Task, IDTSComponentPersist
{
}
}
这是我尝试编译时看到的错误截图:
HTTPClientConnection
是可行的,因为我设计的两个程序包只需要从一个文件中下载所有数据。但是有些其他的程序包需要进行多次 HTTP 请求来提取所有数据,所以我将考虑使用WebClient
来完成这个任务。 - Iain Samuel McLean Elder