Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Dubbio su SSIS e Package Configurations
martedì 23 agosto 2011 - 17.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows XP
|
Visual Studio 2005
|
SQL Server 2005
luca1988
Profilo
| Newbie
11
messaggi | Data Invio:
mar 23 ago 2011 - 17:12
Ciao a tutti, dato che è il mio primo post mi presento velocissimamente: sono Luca, ho 23 anni e, dopo aver utilizzato per un bel po' C# ora sto iniziando ad entrare un po' più nel vivo del mondo SQL Server.
In particolare in questo momento sto utilizzando SSIS (Sql Server 2005). In merito ho un dubbio che mi piacerebbe risolvere:
Ho creato una tabella sul DB in modo da gestire lo scambio di valori tra i task SQL (e le pagine del portale) e le elaborazioni fatte con i dtsx. Mi spiego meglio:
Ho creato la tabella SSIS_Configurations (ConfigurationFilter, ConfiguredValue, PackagePath, ConfiguredValueType, IdRecord) che deve contenere i valori delle variabili da utilizzare nel dtsx. In particolare voglio mappare due variabili: "Path" e "Output". Naturalmente in ConfiguredValue c'è il valore e in PackagePath il nome della variabile interna (nel mio caso "\Package.Variables[User::Path].Properties[Value]" e "\Package.Variables[User::Output].Properties[Value]")
0) Nel dtsx ho configurato questa tabella come "scambio di dati" andando in SSIS > Package Configurations e "mappando" due variabili interne al dtsx (sempre "Path" e "Output", proprietà "Value" per entrambe) con quelle della tabella a cui ho fatto riferimento poco sopra.
1) Dalla Stored Procedure scrivo il valore "D:\test.bat" nel campo "Path" della tabella
2) Lancio il dtsx e legge correttamente il valore "D:\test.bat" dalla variabile interna
3) Utilizzo questa variabile come nome del file da lanciare con un "Execute Process Task". Nelle proprietà di quest'ultimo imposto "StandardOutputVariable" con l'altra variabile mappata ("Output"). Lo scopo è ovvio: il task lancia un bat che, in questo caso, fa la copia di un file e in "StandardOutputVariable" compare la stringa "... 1 file(s) copied ...". Ok, questo valore viene inserito nella variabile Output.Value. E qui io mi aspettavo che, essendo la variabile mappata, questo valore venisse scritto anche sul DB, nella tabella creata precedentemente. Invece nulla..
Mi chiedo: con Package Configurations è possibile solamente "inviare" valori in ingresso da sql alle variabili dtsx oppure è anche possibile (e, se si, quali sono i passi che mi mancano) "esportare" valori dalle variabili dtsx a sql?
No so se mi sono spiegato. Nel caso il problema non fosse chiaro cercherò di essere più preciso ;-)
Grazie comunque in anticipo per l'attenzione e per le eventuali risposte..
Luca
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 24 ago 2011 - 10:29
>Ciao a tutti, dato che è il mio primo post mi presento velocissimamente:
>sono Luca, ho 23 anni e, dopo aver utilizzato per un bel po'
>C# ora sto iniziando ad entrare un po' più nel vivo del mondo SQL Server.
Ciao e benvenuto su dotnethell!
>Mi chiedo: con Package Configurations è possibile solamente "inviare"
>valori in ingresso da sql alle variabili dtsx oppure è anche
>possibile (e, se si, quali sono i passi che mi mancano) "esportare"
>valori dalle variabili dtsx a sql?
Cerco di capire la domanda.. stai chiedendo se la config è readonly oppure se puoi cambiare i valori successivamente per riusarli?
>Grazie comunque in anticipo per l'attenzione e per le eventuali risposte..
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
luca1988
Profilo
| Newbie
11
messaggi | Data Invio:
mer 24 ago 2011 - 10:59
più o meno ;-)
sto cercando di capire questo:
1) Salvo il valore "PROVA-INPUT" nel campo "ConfiguredValue" della tabella "SSIS_Configurations" di cui ho parlato nel primo post (il campo "PackagePath" contiene il valore "\Package.Variables[User::Path].Properties[Value]") <-- OK, FUNZIONA
2) Lancio il DTSX e la variabile INTERNA "User::Path" contiene il valore "PROVA-INPUT" prelevato dalla tabella SQL mappata <-- OK, FUNZIONA
3) All'interno del DTSX cambio il valore della variabile "User::Path" e lo modifico in "PROVA-OUTPUT" <-- OK, FUNZIONA
4) All'interno del DTSX leggo il valore corrente della variabile "User::Path" aspettandomi di ricevere "PROVA-OUTPUT" <-- OK, FUNZIONA
5) Dato che il DTSX è stato "capace" di trasferire il valore "PROVA-INPUT" dalla tabella SQL alla variabile DTSX, mi aspettavo che fosse anche in grado di AGGIORNARE il valore della tabella SQL quando, all'interno del DTSX stesso, cambia il valore della variabile "User::Path" <-- NON FUNZIONA, SULLA TABELLA SQL RIMANE SETTATO IL VALORE "PROVA-INPUT".
Dunque: DTSX è solamente in grado di LEGGERE i valori da una tabella SQL mappata per trasferirli poi nelle rispettive variabili interne OPPURE può anche aggiornare la tabella SQL quando cambiano i valori delle rispettive variabili interne?
Chiedo scusa per la (probabile) confusione, SSIS è un mondo nuovo per me ;-)
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 24 ago 2011 - 11:29
>5) Dato che il DTSX è stato "capace" di trasferire il valore
>"PROVA-INPUT" dalla tabella SQL alla variabile DTSX, mi aspettavo
>che fosse anche in grado di AGGIORNARE il valore della tabella
>SQL quando, all'interno del DTSX stesso, cambia il valore della
>variabile "User::Path" <-- NON FUNZIONA, SULLA TABELLA SQL
>RIMANE SETTATO IL VALORE "PROVA-INPUT".
Eh no, non è in grado perchè non c'è una reference come se fosse un oggetto (stesso "puntatore") e non c'è niente che le tiene legate.
>Dunque: DTSX è solamente in grado di LEGGERE i valori da una
>tabella SQL mappata per trasferirli poi nelle rispettive variabili
>interne OPPURE può anche aggiornare la tabella SQL quando cambiano
>i valori delle rispettive variabili interne?
C'è un momento all'inizio dell'esecuzione in cui tutti i mapping della config vengono realizzati. Il mapping è unidirezionale, ovvero "leggo da tabella,xml,environmentvar,registry,ecc.. e scrivo su var o proprietà ssis"
Se vuoi appoggiare le var per esecuzioni successive puoi sempre usare altri metodi come files, var globali da passare ad un eventuale execute package, scrivere su un'altra tabella, ecc.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
luca1988
Profilo
| Newbie
11
messaggi | Data Invio:
mer 24 ago 2011 - 11:47
Thanks, allora ho risolto in questo modo:
1) Lancio un "Execute Process Task" impostando dinamicamente il campo "Executable" in base al contenuto "prelevato" dalla tabella SQL (lo scopo della mappatura delle variabili era proprio quello di modificare di volta in volta il BAT da eseguire)
2) Salvo lo "StandardOutputVariable" del task in oggetto in una variabile DTSX
3) Utilizzo uno "Script Task" per fare altre cose e, nel contempo, eseguire una query di UPDATE sul DB per inserire il nuovo valore dello StandardOutputVariable (ad ogni esecuzione mi interessa "stampare a video" il risultato del BAT eseguito).
Spero possa essere d'aiuto per altri utenti.
Grazie ancora per i chiarimenti,
Luca
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 25 ago 2011 - 00:44
>3) Utilizzo uno "Script Task" per fare altre cose e, nel contempo,
>eseguire una query di UPDATE sul DB per inserire il nuovo valore
>dello StandardOutputVariable (ad ogni esecuzione mi interessa
>"stampare a video" il risultato del BAT eseguito).
>Spero possa essere d'aiuto per altri utenti.
>
>Grazie ancora per i chiarimenti,
grazie a te
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
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 !