Ssis "cura" del db

mercoledì 08 ottobre 2008 - 12.12

memmo77 Profilo | Expert

Ciao ... Ale . Stavo pensando ad un bel ssis che tenga cura del mio db. Integrità, manutenzione backup etc. Solo non so bene cosa fare, metterci e come partire. Che task dovrei utilizzare e in quale sequenza secondo te?

ps. complimenti per:
http://blogs.technet.com/alead_msft/archive/2008/09/25/intervista-ai-microsoft-mvp-alessandro-alpi.aspx

Io lo dico sempre che sei un grande

alx_81 Profilo | Guru

http://www.dotnethell.it/forum/messages.aspx?ThreadID=25771
occhio a non crosspostare troppo..
--

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

memmo77 Profilo | Expert

perdonami , ma il server mi dava errore e credevo non lo avesse inserito, ...invece si . Grazie del consiglio mi do da fare e ti faccio sapere

memmo77 Profilo | Expert

Senti, non so se posso chiedertelo qui, o aprire un altro post (visto che ne ho già aperti 3 ). In un ssis, come gestisco gli errori di un task? Cioè, io ho provato a collegare la "freccia" rossa del task che dovrei tenere sotto controllo, ma mi dice di Configurare le disposizioni .... (e poi non si legge + il messaggio). Come si gestiscono gli errori dei task? Grazie ciao

alx_81 Profilo | Guru

>Senti, non so se posso chiedertelo qui, o aprire un altro post
>(visto che ne ho già aperti 3 ). In un ssis, come gestisco
>gli errori di un task? Cioè, io ho provato a collegare la "freccia"
>rossa del task che dovrei tenere sotto controllo, ma mi dice
>di Configurare le disposizioni .... (e poi non si legge + il
>messaggio). Come si gestiscono gli errori dei task?
Ma sei in control flow o data flow?


--

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

memmo77 Profilo | Expert

Sono in Data Flow.
Adesso stavo vedendo il gestore eventi. Ma non so come recuperare il "record" che mi da errore. Ho visto che se va in OnError mi finisce li e mi sono stampato un messaggio al volo.

alx_81 Profilo | Guru

>Sono in Data Flow.
In dataflow, devi configfurare l'error Output.. ti faccio un esempio:

832x194 28Kb



745x273 27Kb

Devi dirgli di ridirigere la riga e poi la freccia rossa la devi mettere in un task di destinazione o uno script, tanto per poter mettere un dataviewer.. Evitando di scrivere dati da qualche parte. Se ti serve un log degli errori, usa una destinazione, sennò anche uno script come trasformazione è sufficiente.
--

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

memmo77 Profilo | Expert

Configure error Output lo trovo sul task colonna derivata. Nel mio caso servirebbe su un tasl comando ole db. L'ho collegato ad un file di testo, ho messo la freccia rossa e gli ho detto reindirizza record. Sembra prenderlo correttamente, solo che quando va in errore si blocca al task comando ole db e non mi scrive nulla sul file.
Come ti ripeto però non trovo qui la voce Configure error Output, che si vede nella prima immagine che hai messo.
Grazie

alx_81 Profilo | Guru

>Configure error Output lo trovo sul task colonna derivata. Nel
>mio caso servirebbe su un tasl comando ole db. L'ho collegato
>ad un file di testo, ho messo la freccia rossa e gli ho detto
>reindirizza record. Sembra prenderlo correttamente, solo che
>quando va in errore si blocca al task comando ole db e non mi
>scrive nulla sul file.
Hai messo un dataviewer? aggiungilo alla freccia rossa, così vedi se effettivamente passa di lì.
L'oledb command ha l'errore implicito, è corretto come hai fatto tu.


--

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

memmo77 Profilo | Expert

Niente da fare, non mi ci va. Si blocca, il task diventa rosso, va in errore, ma non finisce ne sul datawiever ne sulla prova di prima sul file flat. Eppure la freccia rossa è collegata, il reindirizzamento del record c'è ... boh

alx_81 Profilo | Guru

Allora è un problema che hai a priori..
Prova a passare il SSIS..
--

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

memmo77 Profilo | Expert

Ecco nello specifico quello che succede:


595x509 137Kb


Al momento dell'errore non va avanti. Adesso ti preparo quel pezzo ete lo mandi, tutto il ssis è molto + grande. Ma che tu sappia, c'è da abilitare o impostare a true qualcosa per fargli gestire l'errore?
Non capisco faccio tutto ma non va. Grazie ciao

alx_81 Profilo | Guru

>Al momento dell'errore non va avanti. Adesso ti preparo quel
>pezzo ete lo mandi, tutto il ssis è molto + grande. Ma che tu
>sappia, c'è da abilitare o impostare a true qualcosa per fargli
>gestire l'errore?
No, basta ridirigere la riga.. ma dipende se l'errore te lo da a runtime oppure se in quel momento sta validando..
Devi cercare di capire dall'explorer alla fine l'errore che torna.. se è troncato, premi il destro del mouse sulla stringa e fai copy text. Incollalu su un blocco note e controlla meglio l'errore che ti torna.
Se riesci, manda il pezzo..
ciao!
--

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

memmo77 Profilo | Expert

Allora, l'errore che viene generato ha la seguente descrizione:

[PROSP|FUNZIONI|UP_VALUTE_NO [167]] Errore: Codice di errore SSIS DTS_E_OLEDBERROR. Si è verificato un errore OLE DB. Codice di errore: 0x80040E14. È disponibile un record OLE DB. Origine: "Microsoft SQL Native Client" Hresult: 0x80040E14 Descrizione: "Sintassi non corretta in prossimità di ','.".

So da cosa dipende e lo lascio proprio per cercare di scrivere l'errore e il record errato in un file di log. Ma niente la freccia rossa redirige i dati solo in caso di troncamento? Se così fosse, ci farei ben poco.

c'è anche questa notifica (punto esclamativo):

Avviso: Codice di avviso SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. Il metodo Execution è stato completato, ma il numero di errori generati (3) è pari al massimo consentito (1) e pertanto viene restituito un errore. Questo errore si verifica quando il numero di errori raggiunge il valore specificato in MaximumErrorCount. Modificare l'impostazione MaximumErrorCount o correggere gli errori.

Ti allego anche il task.
Grazie ciao

alx_81 Profilo | Guru

>So da cosa dipende e lo lascio proprio per cercare di scrivere
>l'errore e il record errato in un file di log. Ma niente la freccia
>rossa redirige i dati solo in caso di troncamento? Se così fosse,
>ci farei ben poco.
Perchè quell'errore non gestisce l'errore di sintassi. Questo tipo di errore lo hai o a compile time o al momento del parsing del codice. Quindi non è gestibile tramite dataflow. L'errore di questo tipo va gestito a monte, esternamente. Se vuoi simulare un errore valido, metti una colonna NOT NULL e prova a non inserirvi nulla. Vedrai che dalla freccia rossa ci passa
>
>Avviso: Codice di avviso SSIS DTS_W_MAXIMUMERRORCOUNTREACHED.
>Il metodo Execution è stato completato, ma il numero di errori
>generati (3) è pari al massimo consentito (1) e pertanto viene
>restituito un errore. Questo errore si verifica quando il numero
>di errori raggiunge il valore specificato in MaximumErrorCount.
>Modificare l'impostazione MaximumErrorCount o correggere gli errori.
Sì questo è il messaggio standard.. a te interessa il primo. Gli altri sono la catena delle eccezioni che si scatenano e che vengono rilanciate in base alle impostazioni del package. Quel SSIS DTS_W_MAXIMUMERRORCOUNTREACHED è la proprietà MaximumErrorCount del container (nel tuo caso il DataFlow).

>Grazie ciao
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

memmo77 Profilo | Expert

>Perchè quell'errore non gestisce l'errore di sintassi. Questo tipo di errore lo hai o a compile time o al momento del parsing del codice. Quindi non è >gestibile tramite dataflow. L'errore di questo tipo va gestito a monte, esternamente. Se vuoi simulare un errore valido, metti una colonna NOT NULL e >prova a non inserirvi nulla. Vedrai che dalla freccia rossa ci passa

Quindi come posso gestire l'errore di sintassi? Si ho provato a troncare un dato e i dati finiscono nella freccia rossa. Però peccato, credevo ci finissero anche altri tipi di errore.
Grazie comunque. Ciao

alx_81 Profilo | Guru

>Quindi come posso gestire l'errore di sintassi?
eheh.. purtroppo, non riesci..
Puoi pensare di controllare tu con uno script transformation task ed una try catch sul comando che vai a comporre..
Ma trovo più corretto, in ogni applicazione, evitare che esistano errori di sintassi a monte..

>Si ho provato a troncare un dato e i dati finiscono nella freccia rossa. Però
>peccato, credevo ci finissero anche altri tipi di errore.
Quello di sintassi però non è un'errore vero e proprio dovuto al flusso dei dati o alla logica applicativa. Il controllo dovresti farlo tu.. Anche perchè, considera i linguaggi compilati, senza errori compili, altrimenti no e quindi nemmeno il programma parte..

>Grazie comunque. Ciao
di nulla! Ciao!

PS: Se accetti la risposta, se ritieni che ti sia stata utile, chiudiamo il thread

--

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
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5