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
[SQL-2005] Eseguire DTSX con pagine ASP
giovedì 05 febbraio 2009 - 17.21
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
gio 5 feb 2009 - 17:21
Buongiorno a tutti,
Ho un quesito da porvi. E'da qualche mese che sto lavorando sui SSiS che hanno preso il posto dei vecchi DTS e devo dire che la differenza e' veramente notevole.
Io ho creato e configurato dei pacchetti dtsx sul mio server sql 2005 e sia lanciati a mano, che schedulati, funzionano benissimo.
Ora avendo in azienda un crm fatto in asp ho la necessità di far lanciare da parte di alcuni operatori questi dtsx passandogli dei parametri cercando di ovviare per operazioni molto lunghe il timeout delle pagine asp. (uno di questi dtsx e' abbastanza lunghetto).
Io pensavo di fare cosi non sapendo proprio da dove inziare, (correggetemi se sto dicendo una stupidaggine):
1) creare una semplicissima tabella di appoggio su sql server in cui i campi sarebbero composti da "id", "nome dtsx", "parametri", "stato"
2) gestire il data entry di questa tabella con una normalissima pagina asp. (magari il nome dtsx) con un campo select giusto per non sbagliare il nome.
3) Catturare l'evento (con trigger?!?!) del data entry di questa tabella per far partire una stored procedure con i valori del record di questa tabella per selezionare il dtsx e i suoi relativi parametri.
4) Far restituire dal dtsx lanciato l'update di questi record con lo stato dell'avvenuto o non avvenuta buon fine dell'operazione.
Sinceramente non so se sia la strada giusta, ma mi affido alle vs esperienze per segnalarmi qualche esempio o qualche idea migliore!:)
Grazie mille,
Maurizio Amoroso
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 5 feb 2009 - 20:10
>Buongiorno a tutti,
Ciao!
>Sinceramente non so se sia la strada giusta, ma mi affido alle
>vs esperienze per segnalarmi qualche esempio o qualche idea migliore!:)
L'idea di fare dataentry da una pagina asp rende asincrono il tutto e mi piace
.
Però l'esecuzione dei SSIS la farei tramite SSIS
, mi spiego.
Farei un job su sql server che gira ogni tot minuti e che lancia un ssis master il quale, a sua volta, legge la tabella gestita da asp e scoda, lanciando i package uno alla volta sfruttando l'execute package task:
http://msdn.microsoft.com/en-us/library/ms137609.aspx
>Grazie mille,
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
ven 6 feb 2009 - 10:44
riusciresti a buttarmi giu' un esempio stupido dal quale poter poi mettere tutte le cose di cui ho bisogno?
per me e' un mondo nuovo .. e mi serve il "LA" :)
ti prego :P
Maurizio
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 6 feb 2009 - 14:23
>riusciresti a buttarmi giu' un esempio stupido dal quale poter
>poi mettere tutte le cose di cui ho bisogno?
>per me e' un mondo nuovo .. e mi serve il "LA" :)
>
>ti prego :P
te lo passo a parole, sotto forma di step by step:
1) crei un SSIS ed un connection manager che punta al db in cui hai la tabella
2) crei una variabile di tipo object che conterrà il resultset della tabella
3) trascini un execute sql task e lo imposti con output FullResultSet immettendo il comando che seleziona i record dalla tabella (mi raccomando vai ad assegnare l'output alla variabile nell'apposita finestra)
4) In questo modo avrai una variabile object popolata con il resultset
5) trascina un foreach loop impostando l'iteratore For Each ADO
6) come collezione metti la variabile e poi mappa il resultset, riga per riga a n variabili (una per campo che ti serve)
7) crea un file connection manager (file, non flat file) che punta ad un qualunque ssis da lanciare
8) imposta l'expression del file connection manager alla variabile sulla quale è mappato il nome del ssis (quella del foreach, che avrà scope globale)
8) all'interno del foreach lanci un Execute Package Task legato al file connection manager
Dovrebbe essere tutto.. prova punto punto e dove ti fermi chiedi pure
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
ven 6 feb 2009 - 15:03
Perdonami, ti invio le schermate per i primi 4 passi :P
dopodiche' mi son perso ;) dimmi se almeno questi passi li ho fatti bene.
1920x1200
210Kb
1920x1200
211Kb
e' che e' la prima volta x me che uso le variabili .. vorrei essere sicuro di non perdermi un passaggio.
grazie,
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 6 feb 2009 - 15:12
ehehe.. non si vede nulla, le immagini vengono ridimensionate.
Comunque, ho visto che hai creato l'executesql task e ok.
Ho visto che hai anche messo nei result laq variabile di tipo object, e ok anche quello.
Di conseguenza devi aver anche messo il fullresultset. Bene.
Ora devi mettere nello statement la select che ricava i record.
Poi per ogni colonna della tua select vai a creare una var col tipo corretto.
Poi trascini un for each loop container e dopppio clicki su di esso per definire l'iteratore ADO (non ado.net) e impostare la variabile object nel foreach come oggetto da scorrere. In questo modo il foreach scorrerò per ogni record definito nella var. Per provare a vedere se funziona puoi mettere uno script task all'interno del foreach che non fa nulla, immettendo un breakpoint (il numero dei cicli deve essere pari al numero delle righe tornate dalla tua select)
Quando sei qui fammi un fischio..
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
ven 6 feb 2009 - 15:41
lo statement per selezionare i record della tabella l'avevo messo e se lo provo va bene.
le variabili che mi dici te devo inserirle nel riquadro variabili ..
593x593
42Kb
il mio record nella tabella al momento contiete solo 4 campi (di cui uno data che non mi serve gestire)
id
nomeSSiS
doned (valorizzato a 0 .. nuovo ... e 1 .. eseguito ) insomma da gestire
se io provo a creare un ciclo for each ado come mi hai detto te .. specifico anche la variabile di oggetto di prima .. ma da nessuna parte mi fa mappare le variabili create con quella dell'ipotetica riga .. dov'e' che sbaglio ?
926x862
94Kb
931x871
108Kb
:D
mi sembra di stare all'asilo lol ... siamo al limiti dell'imbarazzante ;P
scusami!
edit: cmq al primo passaggio mi da gia' errore:
SSIS package "agent.dtsx" starting.
Error: 0xC00291E2 at Execute SQL Task, Execute SQL Task: There is an invalid number of result bindings returned for the ResultSetType: "ResultSetType_Rowset".
Task failed: Execute SQL Task
Warning: 0x80019002 at agent: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "agent.dtsx" finished: Failure.
per la serie iniziamo bene :P
M.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 6 feb 2009 - 17:26
>le variabili che mi dici te devo inserirle nel riquadro variabili
sì, ma poi devi mapparle nel foreach.
>se io provo a creare un ciclo for each ado come mi hai detto
>te .. specifico anche la variabile di oggetto di prima .. ma
>da nessuna parte mi fa mappare le variabili create con quella
>dell'ipotetica riga .. dov'e' che sbaglio ?
leggi qui:
http://blogs.dotnethell.it/suxstellino/I-container-ed-il-grouping__5683.aspx
>SSIS package "agent.dtsx" starting.
>Error: 0xC00291E2 at Execute SQL Task, Execute SQL Task: There
>is an invalid number of result bindings returned for the ResultSetType:
>"ResultSetType_Rowset".
Come hai assegnato il resultset alla variabile oggetto?
Leggi qui:
http://blogs.dotnethell.it/suxstellino/Control-Flow-Tasks-%E2%80%93-Execute-SQL-Task__4001.aspx
>per la serie iniziamo bene :P
tutte le cose che mi chiedi, comunque, le trovi nel blog
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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 !