Come eseguire un pacchetto SSIS da Visual Basic 6?
-
03-07-2019 - |
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.
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:
- SSIS : http: //www.mssqltips. com / tip.asp? punta = 1395
- ADODB.Command : http: // www. codeproject.com/KB/vbscript/simple_sp_vb6.aspx
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:
- Fai clic con il pulsante destro del mouse sul pacchetto SSIS e scegli "Esegui".
- Nella finestra Esegui pacchetto fare clic sul pulsante "Script".
-
Aggiungi all'inizio dello script generato:
CREATE PROCEDURE sp_NewProcedureName AS BEGIN
-
E aggiungi in fondo allo script generato:
END GO
-
Esegui questo script per creare la Stored Procedure.
Quindi utilizzare il codice per chiamare la Stored Procedure
-
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.