2011-07-13 29 views
5

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:

enter image description here

+0

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. –

Respuesta

7

En 64-bit sistema operativo, se puede encontrar el archivo Microsoft.SQLServer.ManagedDTS.dll en la siguiente ruta:

C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies

En 32-bit sistema operativo, se puede encontrar el archivo Microsoft.SQLServer.ManagedDTS.dll en la siguiente ruta:

C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies

La carpeta bajo Microsoft SQL Server representa SQL Server 2005.

La carpeta en Microsoft SQL Server representa SQL Server 2008.

+0

Gracias, Siva. Estoy ejecutando un sistema operativo de 64 bits y una versión de 64 bits de SQL Server 2008. –

+2

Sé que ya hace tiempo que está cerrado, pero si observa esas rutas y la biblioteca no está allí, active el disco de instalación de SQL Server. e instala el SDK. Nos encontramos con eso hoy. – Mark

+1

La reinstalación de las herramientas del cliente SDK a través del disco de instalación funcionó para mí. –

3

Sólo una pequeña actualización en la respuesta anterior para SQL2012

archivos DLL están en 110.

Ahora, incluso después de añadir la referencia obtendrá el mismo error si se construye su proyecto con .Net3.5 o perfiles más antiguos.

para SQL2012 debe utilizar .Net4.0 o temprano lo demás Visual Studio le mostrará el mismo error.

1

Después de instalar SS2012, la escritura es paquetes SSIS desarrollados en ss2008r2 tienen describe el error. Después de varios intentos de resolver, instalé sd2008r2 sdk, abro todos los scripts y cierro, y todo está bien ahora.

Gracias Marcar

+0

Funcionó para mí. Muchas gracias. –

Cuestiones relacionadas