Aggiornamento DTS per SQL SERVER 2008 R2

venerdì 11 aprile 2014 - 12.14
Tag Elenco Tags  Windows Server 2008 R2  |  Visual Studio 2008  |  SQL Server 2008

saritron Profilo | Newbie

Salve a tutti, vi contatto per un aiuto.
Sto migrando un DB da SQL Server 2000 32 bit a SQL SERVER 20008 R2 64 bit.
Ho fatto tutti i controlli mediante l'upgrade advisor e mi ha dato la fattibilità segnalando diverse criticità riguardo la trasformazione dei dts in dtsx.
Ho già migrato con successo un dts ma ora mi trovo davanti un problema.
La maggior parte dei dts fa riferimento a un file .ini in cui vengono indicate alcune variabili necessarie per il funzionamento dei dts, come la data limite per le transazioni da trattare, i percorsi da cui bisogna prendere i file per caricare le transazioni che saranno poi gestite, i percorsi dove inviare i file di backup il nome dei file da caricare essendo del tipo NOMEFILEYYYYMMDD.txt per cui il nome del file rimane lo stesso e poi giorno per giorno cambia la data, i riferimenti del server ftp cui inviare alcuni file, il percorso del file .exe che consente la compressione(l'exe di winzip).
Volevo caricare questi parametri mediante la configurazione pacchetto, ma questo non posso farlo a mano, ma solo mediante un file xml o variabili d'ambiente, ho provato a creare un file xml che permettesse di imporatare queste configurazioni, ma il file mi da errore, avendone creato uno standard da sql server ho provato a costruire uno simile, ma l'errore rimane, potete indicarmi dove posso avere informazioni su come creare il file?
Oppure un altro modo per caricare queste variabili?
Grazie per esssere riusciti a leggere tutto il testo e un bravi se mi risolvete il problema.

alx_81 Profilo | Guru

>Salve a tutti, vi contatto per un aiuto.
ciao

>potete indicarmi dove posso avere informazioni su come creare il file?
Per fare questo basta aprire un package e abilitare le config, segnando come tipo XML. Se segui il wizard, il file verrà creato.
Guarda qui: http://msdn.microsoft.com/en-us/library/cc895212.aspx

>Oppure un altro modo per caricare queste variabili?
Se vuoi usare gli stessi INI potresti fare un package che legge l'ini con uno script e poi chiama un package figlio che è il tuo da chiamare (o i tuoi). Un orchestratore insomma...

>Grazie per esssere riusciti a leggere tutto il testo e un bravi se mi risolvete il problema.
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

saritron Profilo | Newbie

Grazie per i consigli, una parte di quello che mi avevi consigliato l'avevo già fatto, diciamo che ho messo una pezza al problema, devo studiare alcuni aspetti per automatizzare il tutto ma ci siamo ora però se possibile vorrei un altro consiglio.
Sto riportando il dts in maniera conforme agli standard del 2008 e ora mi trovo a un problema.
Ad un certo punto si fa un controllo su un campo e richiama una variabile usando DTSGlobalVariables, va in errore perché non vene più supportata, avete qualche riferimento per superare il problema?
Allego lo script:
'**********************************************************************
' Script ActiveX Visual Basic

' Il Task controlla se ci sono iscritti PAN ( len(CCP)> 12 )
' non presenti in T_CODI_PPY
'************************************************************************

Function Main()

if (DTSGlobalVariables("CTRL_CODI_PPY").Value = 0) then
Main = DTSTaskExecResult_Success
else
Main = DTSTaskExecResult_Failure
end if

End Function

CTRL_CODI_PPY è la variabile che viene richiamata

Grazie


alx_81 Profilo | Guru

>Ad un certo punto si fa un controllo su un campo e richiama una
>variabile usando DTSGlobalVariables, va in errore perché non
>vene più supportata, avete qualche riferimento per superare il
>problema?
perchè non pensi di convertire l'activeX in uno script task o in uno script component all'interno del dataflow (dipende da come usi l'activeX).
Io penserei sinceramente di rifattorizzare, evitando il VBScript... questa è una buona guida: http://oakdome.com/programming/SSIS_ActiveXScript_to_ScriptTask.php
come vedi dalla doc, è pure deprecato: http://technet.microsoft.com/en-us/library/ms137525(v=sql.105).aspx e infatti nella 2012 non trovi più il supporto. Io ci penserei sinceramente..
In alternativa, credo che tu dovrai configurare qualcosa da fuori, ma non ho mai lasciato un activeX per dirti con certezza come funziona.
Puoi creare una stringa variabile in cui concateni la tua variabile che ti arriva dalle config.. Molto brutto (poi dovresti iniettare la stringa come expression) ma almeno ti darebbe respiro se hai urgenza.
In questo modo prendi tempo per la conversione che ormai è diventa importante..

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

saritron Profilo | Newbie

Diciamo che in questo stadio sto nella fattibilità nel fare un upgrade a 2008 opprure trasmigrare in un altro DBSERVER, mi hanno dato un test sulla fattibilità per vedere le problematiche e ho affrontato un paio di dts, uno semplice e c'è voluto poco, uno più complesso e mi trovo difficoltà diverse, questo per valutare la convenienza all'upgrade, oggi ho la riunione per valutare la cosa, eventualmente vi farò sapere, se si continua su questa strada, penso che terrò il post abbastanza attivo

alx_81 Profilo | Guru

>Diciamo che in questo stadio sto nella fattibilità nel fare un
>upgrade a 2008 opprure trasmigrare in un altro DBSERVER, mi
>hanno dato un test sulla fattibilità per vedere le problematiche
>e ho affrontato un paio di dts, uno semplice e c'è voluto poco,
>uno più complesso e mi trovo difficoltà diverse, questo per valutare
>la convenienza all'upgrade, oggi ho la riunione per valutare
>la cosa, eventualmente vi farò sapere, se si continua su questa
>strada, penso che terrò il post abbastanza attivo
Secondo me la conversione da VBScript a VB.net o C# è la strada migliore..
e nemmeno così dolorosa

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

saritron Profilo | Newbie

Infatti è quella che proporrò e che attualmente sto testando, siccome non sono molto esperto di vb6 conoscete qualche tool di conversione VB6 to C#?
Ora sto testando SQL Ways

saritron Profilo | Newbie

Vi annuncio che la scelta è stata modifcare i dts e aggiornare il DB, per cui ho iniziato a lavorare sul serio sulla cosa.
Ora vi pongo un problema, in una trasformazione mi trovo da vore gestire l'inserimento di una colonna mediante una activex come posso vare la stessa cosa con un script C#?
Ho smanettato sul componente ma non ho trovato nessun punto dove inserire lo script.

alx_81 Profilo | Guru

>Vi annuncio che la scelta è stata modifcare i dts e aggiornare il DB, per cui ho iniziato a lavorare sul serio sulla cosa.
sono contento per te

>Ora vi pongo un problema, in una trasformazione mi trovo da vore
>gestire l'inserimento di una colonna mediante una activex come
>posso vare la stessa cosa con un script C#?
dovrai utilizzare uno Script Component come trasformazione appunto e gestire l'evento (se non ricordo male) ProcessInputRow..
Qui di seguito ci sono alcuni tips & tricks che scrissi tempo fa (2005 e 2008 sono le versioni di cui parlo in quei post) e magari possono aiutarti:
http://blogs.dotnethell.it/suxstellino/DataFlow-%E2%80%93-Script-Component-come-sorgente__7477.aspx
http://blogs.dotnethell.it/suxstellino/Come-scrivere-codice-con-gli-Script-task-e-component__15462.aspx
http://blogs.dotnethell.it/suxstellino/SSIS-Scrittura-del-codice-su-Script-Task__11518.aspx
http://blogs.dotnethell.it/suxstellino/Script-Component-Passthrough-delle-colonne-di-input-sync-vs-async__18422.aspx
http://blogs.dotnethell.it/suxstellino/SSIS-Come-creare-un-file-di-configurazione-articoli-utili__18107.aspx
http://blogs.dotnethell.it/suxstellino/Come-creare-un-file-di-configurazione-con-SSIS__17575.aspx

scrivevo tanto su SSIS poi ho smesso di usarlo..

>Ho smanettato sul componente ma non ho trovato nessun punto dove inserire lo script.
nel 2012 ti dà questo:
/// <summary> /// This method is called once, before rows begin to be processed in the data flow. /// /// You can remove this method if you don't need to do anything here. /// </summary> public override void PreExecute() { base.PreExecute(); /* * Add your code here */ } /// <summary> /// This method is called after all the rows have passed through this component. /// /// You can delete this method if you don't need to do anything here. /// </summary> public override void PostExecute() { base.PostExecute(); /* * Add your code here */ } /// <summary> /// This method is called once for every row that passes through the component from Input0. /// /// Example of reading a value from a column in the the row: /// string zipCode = Row.ZipCode /// /// Example of writing a value to a column in the row: /// Row.ZipCode = zipCode /// </summary> /// <param name="Row">The row that is currently passing through the component</param> public override void Input0_ProcessInputRow(Input0Buffer Row) { /* * Add your code here */ }

i commenti mi sembrano piuttosto chiari..

La guida su MSDN è qui:
http://msdn.microsoft.com/en-us/library/ms136118.aspx
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5