2010-03-10 9 views
5

Possiedo un pacchetto DTS che viene eseguito sul nostro server di database MS SQL Server 2000 e richiede agli utenti un modo per eseguirlo dalle proprie macchine. (Il pacchetto crea i file che vengono poi trasferiti dalla mia applicazione al computer client.) Ho incluso il riferimento COM "Libreria oggetti Microsoft DTSPackage" nell'applicazione, ma ricevo comunque un errore "Stringa di classe non valida" quando il primo passo del il pacchetto è eseguito. Ho anche provato a registrare tutte le DLL specificate nel file redist.txt del disco di SQL Server 2000. Qualsiasi pensiero o suggerimento sarebbe molto apprezzato. Il pacchetto DTS è molto semplice. Copia solo i dati dal database SQL nelle tabelle Visual FoxPro. Il mio codice che esegue il pacchetto è riportato di seguito (in gran parte è tratto dall'articolo KB di Microsoft: http://support.microsoft.com/kb/321525)."Stringa di classe non valida" durante il tentativo di eseguire DTS Package in 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 

risposta

1

Se si installano gli strumenti client SQL Enterprise Manager completi sui PC degli utenti, come test possono essere eseguiti correttamente? Forse ti manca qualche requisito. Ricorda che il pacchetto DTS stesso verrà eseguito localmente sul PC dell'utente, non sul server.

+0

Ho installato tutti gli strumenti client, ma ho ancora lo stesso errore. Sto usando un codice che, in passato, ha funzionato su macchine client senza requisiti di registrazione DLL. Quando eseguo l'app su una macchina senza alcuna delle DLL DTS registrate, viene visualizzato un altro messaggio di errore: Il recupero del factory di classe COM per componente con CLSID {10020200-EB1C-11CF-AE6E-00AA004A34D5} non è riuscito a causa del seguente errore: 80040154 Dopo alcune indagini, sembra che questo articolo della Knowledge Base possa fornire una soluzione: http://support.microsoft.com/kb/326909. Seguirò dopo averlo provato. Grazie! –

0

Prova a registrare la DLL con REGASM/CODEBASE