2010-03-10 13 views
5

Tengo un paquete DTS que se ejecuta en nuestro servidor de base de datos MS SQL Server 2000 y necesita una forma para que los usuarios lo ejecuten desde sus propias máquinas. (El paquete crea archivos que luego transfiere mi aplicación a la máquina cliente). He incluido la referencia COM de "Microsoft DTSPackage Object Library" en la aplicación, pero sigo recibiendo un error de "Cadena de Clase Inválida" cuando el primer paso del el paquete se ejecuta. También intenté registrar todas las DLL especificadas en el archivo redist.txt del disco de SQL Server 2000. Cualquier opinión o sugerencia sería muy apreciada. El paquete DTS es muy simple. Simplemente copia datos de la base de datos SQL en tablas de Visual FoxPro. Mi código que ejecuta el paquete está a continuación (gran parte del artículo de KB de Microsoft: http://support.microsoft.com/kb/321525)."Cadena de clase no válida" al intentar ejecutar el paquete DTS en VB .NET

 Dim pkg As DTS.Package 
     pkg = New DTS.Package 
     Dim cpContainer As System.Runtime.InteropServices.ComTypes.IConnectionPointContainer 
     cpContainer = CType(pkg, System.Runtime.InteropServices.ComTypes.IConnectionPointContainer) 
     Dim cpPoint As System.Runtime.InteropServices.ComTypes.IConnectionPoint 
     Dim PES As PackageEventsSink = New PackageEventsSink 

     Dim guid As Guid = New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5") 

     cpPoint = Nothing 
     cpContainer.FindConnectionPoint(guid, cpPoint) 

     Dim intCookie As Integer 
     cpPoint.Advise(PES, intCookie) 

     pkg.LoadFromSQLServer(DTS_SERVER_NAME, , , DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, dtsPassword, , , dtsName, Nothing) 
     If pkg Is Nothing Then Throw New ApplicationException("The DTS Package could not be loaded from the SQL Server.") 

     Dim pkgStep As DTS.Step 
     For Each pkgStep In pkg.Steps 
      pkgStep.Execute() 
     Next 

     pkg.UnInitialize() 
     pkg = Nothing 

     cpPoint.Unadvise(intCookie) 
     cpPoint = Nothing 
     cpContainer = Nothing 
     PES = Nothing 

Respuesta

1

Si instala las herramientas completas del cliente de SQL Enterprise Manager en las PC del usuario, como prueba, ¿pueden ejecutarlo con éxito? Tal vez te falta algún requisito. Recuerde que el paquete DTS se ejecutará localmente en la PC del usuario, no en el servidor.

+0

Instalé todas las herramientas del cliente, pero igual recibí el mismo error. Estoy usando un código que, en el pasado, ha funcionado en máquinas cliente sin ningún requisito de registro de DLL. Cuando ejecuto la aplicación en una máquina sin ninguna de las DLL DTS registradas, aparece otro mensaje de error: Recuperación de la fábrica de la clase COM para el componente con CLSID {10020200-EB1C-11CF-AE6E-00AA004A34D5} error debido al siguiente error: 80040154 Después de algunas investigaciones, parece que este artículo de KB podría proporcionar una solución: http://support.microsoft.com/kb/326909. Haré un seguimiento después de haberlo probado. ¡Gracias! –

0

Intente registrar su DLL con REGASM/CODEBASE

Cuestiones relacionadas