No hay una tarea de flujo de control estándar en SSIS para descargar un archivo a través de HTTP. He probado algunas soluciones (Execute Process wget, Script Task HttpClientConnection), pero he llegado a la conclusión de que Thew forma más robusta y reutilizable para realizar esta tarea es crear un componente personalizado.No se puede compilar el componente SSIS; Falta ensamblaje en Visual Studio 2008
He intentado hacer esto siguiendo Ray Gorski's guide, pero me he encontrado con un problema en mi entorno de desarrollo.
El problema es que Visual Studio 2008 no reconoce el espacio de nombres Microsoft.SqlServer.Dts
. Se queja con el mensaje de error "El tipo o nombre del espacio de nombres 'Dts' no existe en el espacio de nombres 'Microsoft.SqlServer' (¿falta una referencia de ensamblado?)".
Encontré un consejo en the MSDN forum que dice que puedes agregar una referencia agregando el ensamblaje ManagedDTS.dll
que se encuentra en C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\
, pero este directorio no existe en mi sistema. Creo que esto se debe a que estoy usando SQL Server 2008 y SQL Server 2005. No
¿Cómo puedo solucionar este problema?
Aquí está mi código, que se basa en la muestra en la guía de Ray-Gorski. Aquí no hay ningún código para realizar realmente mi tarea, solo un stub vacío, que no se compila.
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
{
}
}
Aquí está una captura de pantalla de los errores que veo cuando intento compilar que:
Gracias por el enlace, Siva. Por ahora, usar 'HTTPClientConnection' está bien, porque los dos paquetes que estoy diseñando descargan todos sus datos de un solo archivo. Pero hay algunos otros paquetes que tienen que realizar múltiples solicitudes HTTP para extraer todos sus datos, por lo que consideraré usar 'WebClient' para esta tarea. –