Domanda

Qualcuno può fornire alcune informazioni su come eseguire un pacchetto di servizi di integrazione, su un'istanza di SQL Server 2005, da Visual Basic 6?

Qualsiasi aiuto è molto apprezzato.

È stato utile?

Soluzione

Devi abilitare xp_cmdshell , in caso contrario, esegui: sp_configure 'xp_cmdshell', '1' in SSMS sul tuo server.

Crea una procedura di archivio e inserisci il seguente codice:

DECLARE @SSISPackage VARCHAR(1000)
DECLARE @cmd VARCHAR(max)
DECLARE @variable_value1 varchar(255)
DECLARE @Result int

SET @SSISPackage = 'C:\path_to_the_package\package_name.dtsx'
SET @cmd = 'dtexec /F "' + @SSISPackage + '"'   
// if you have variables in the package that need to be set up
// add them here
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable1].Properties[Value];"' + @variable_value1 + '"'
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable2].Properties[Value];"' + @variable_value2 + '"'
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable3].Properties[Value];"' + @variable_value3 + '"'

EXECUTE @Result = master..xp_cmdshell @cmd, NO_OUTPUT

Quindi, chiamare la procedura memorizzata da VB6, tramite un comando ADODB.

Hai degli esempi qui:

Spero che sia d'aiuto.

Altri suggerimenti

Sulla base della risposta di Dan S, ciò che ha funzionato per me è stato:

Crea una Stored Procedure che chiama il pacchetto:

  1. Fai clic con il pulsante destro del mouse sul pacchetto SSIS e scegli "Esegui".
  2. Nella finestra Esegui pacchetto fare clic sul pulsante "Script".
  3. Aggiungi all'inizio dello script generato:

    CREATE PROCEDURE sp_NewProcedureName
    AS
    BEGIN
    
  4. E aggiungi in fondo allo script generato:

    END
    GO
    
  5. Esegui questo script per creare la Stored Procedure.

Quindi utilizzare il codice per chiamare la Stored Procedure

  1. Questo codice ha funzionato per me:

    Set adodbConn = New ADODB.Connection
    adodbConn.Open "Provider=sqloledb; Data Source=yourSQLServer; Initial Catalog=yourDB; Integrated Security=SSPI;"
    Set adodbCMD = New ADODB.Command
    With adodbCMD
        .ActiveConnection = adodbConn
        .CommandText = "dbo.sp_NewProcedureName"
        .CommandType = adCmdStoredProc
        .CommandTimeout = 0
        .Execute
    End With
    Set adodbCMD = Nothing
    adodbConn.Close
    Set adodbConn = Nothing
    

Avevo bisogno di aggiungere un riferimento a " Libreria Microsoft ActiveX Data Objects 2.5 " al mio codice VBA.

So che è una risposta a una vecchia domanda, ma spero che la mia risposta riunisca tutto in un unico posto.

Probabilmente il più semplice è sborsare e eseguire dtexec

In alternativa, puoi utilizzare l'utilizzo degli assembly Microsoft.SqlServer.Dts in .NET e lo avvolge in COM (o in un EXE) e quindi lo chiama da VB6.

Quel secondo collegamento ha alcune altre opzioni che potrebbero essere applicate in qualche modo a VB6, ma probabilmente tutte porterebbero al wrapping del codice .NET in un oggetto COM o in un EXE.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top