Questa mattina devo simulare da un cliente l' esecuzione da remoto di alcuni Package che prelevano i dati da un Sistema SQL 2005 e li inseriscono in un MainFrame AS400.
Il problema principale è dato dal fatto che non posso schedulare queste DTS ma devono essere eseguite da un TRIGGER.
Per prima cosa ho dovuto cercare in giro il codice per eseguire in remoto una DTS. Questa è una soluzione. Login sulla macchina SQL e Run della DTS.
/*
DICHIARAZIONE PACKAGE DTS
*/
DECLARE @oPKG int
DECLARE @hr int
EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUT
IF @hr <> 0
BEGIN
PRINT '*** Creazione Pacchetto Fallita ***'
RETURN
END
Mando in esecuzione il Package.
/*
CARICAMENTO
*/
EXEC @hr = sp_OAMethod @oPKG,
'LoadFromSQLServer("[Nome SQL]", "", "", 256, , , , "[nome DTS]")',
NULL
IF @hr <> 0
BEGIN
PRINT '*** Caricamento Fallito ***'
RETURN
END
/*
ESECUZIONE
*/
EXEC @hr = sp_OAMethod @oPKG, 'Execute'
IF @hr <> 0
BEGIN
PRINT '*** Esecuzione Fallita ***'
RETURN
END
A questo punto non mi resta che rilasciare le risorse.
/*
PULIZIA
*/
EXEC @hr = sp_OADestroy @oPKG
IF @hr <> 0
BEGIN
PRINT '*** Distruzione non eseguita correttamente ***'
RETURN
END
Mi auguro che questa soluzione, anche se ormai SQL 2000 e le DTS sono una tecnologia datata e obsoleta, possa essere utile a chi si troverà davanti a questo problema.