2009-03-17 5 views
20

Come si esegue il debug del codice .NET scritto all'interno di un'attività di script in un pacchetto SSIS? L'ambiente di sviluppo consente di posizionare un punto di interruzione, tuttavia non mi porta al codice come farebbe nella normale programmazione .NET durante il debug.Debug in SSIS

Inoltre, non riesco a capire come aggiungere le variabili del pacchetto SSIS alla finestra di controllo di debug?

Attualmente una cosa che ho pensato era l'uso di msgbox. Ma questo non è un sostituto di un debug completo con l'utilizzo dell'ambiente di sviluppo. Qualsiasi aiuto è apprezzato. Grazie.

risposta

9

Il debug di pacchetti SSIS nell'ambiente BIDS non è lo stesso gioco di palle che funziona con Visual Studio.

Potrebbe essere utile consultare il riferimento Debugging How-To-Topics(SSIS)

Se avete sviluppato il vostro molto proprio componente personalizzato, cioè dall'interno di Visual Studio, allora si dovrebbe essere in grado di eseguire il debug la funzionalità specifica di tale componente all'interno di Visual Ambiente di studio, prima di rendere il componente disponibile per l'uso all'interno di BIDS.

Non è possibile eseguire il debug del codice .NET interno che costituisce uno degli altri componenti SSIS incorporati (ad esempio l'attività FTP) all'interno di BIDS, quindi dubito che un componente personalizzato sia diverso.

+0

http://msdn.microsoft.com/en-us/library/ms140033.aspx così scomodo. Sì, BIDS non è davvero come VS. – Steam

1

Penso che SSIS supporti e si fermi sul punto di interruzione in Script Task (nel flusso di controllo). Non lo supporta per Script Transform (nel flusso di dati). È davvero una sfortunata restrizione.

SSIS mostra i valori variabili nella finestra di controllo quando ci si ferma su un punto di interruzione. Non sono sicuro del punto di interruzione dello script, ma i punti di interruzione SSIS (on-pre-esecuzione, ecc.) Funzionano. Ma hai bisogno di un punto di interruzione: non puoi guardare il valore variabile in un momento casuale senza punto di interruzione.

29

Nota: Se si sta eseguendo su x64, è necessario modificare il progetto (SSIS) Debug propertie Run64BitRuntime su false.

Successivamente sarà possibile eseguire il debug di un'operazione di script in .net e interrompere il codice nello script.

A proposito John Sansom dont sembrano aver letto questa parte della domanda: Come si effettua il debug di codice .NET scritto all'interno di un'attività di script in un pacchetto SSIS? È un'attività di script, non un normale debug di SSIS.

Spero che questo aiuti.

+7

La modifica della proprietà Debug Run64BitRuntime su false era la risposta. Ben fatto. +1 – Deano

+0

Dopo aver strappato i capelli per un giorno questa era la soluzione, ho aggiornato le offerte 2013 alle offerte 2015. Penso che l'aggiornamento debba aver resettato la proprietà a 64 bit. – Simon

1

È possibile collegare un debugger a (quasi) qualsiasi processo per il quale si sta scrivendo codice .NET incorporando una chiamata a Debugger.Break nel punto appropriato nella propria origine.

Citando MSDN:

Se nessun debugger è collegato, gli utenti sono invitati, se vogliono collegare un debugger. Se sì, il debugger viene avviato. Se è collegato un debugger, il debugger viene segnalato con un evento breakpoint utente e il debugger sospende l'esecuzione del processo come se fosse stato colpito un punto di interruzione del debugger.

L'ho usato per eseguire il debug di tutti i tipi di cose, incluso il codice C# incorporato in SSIS.

Aggiornamento: Formulazione modificata in quanto non è più una tecnica teorica, ma una che ho usato.

+0

L'aggiunta di questa riga non ha alcun effetto in un'attività di script SSIS – DaveRead

+1

La chiamata correlata "Debugger.Break" funziona, ma a volte si è bloccati con il debug a livello di IL invece di C#. – Bevan

+0

Questo ha funzionato perfettamente per me! Grazie Bevan. –

0

se il componente script nel flusso di dati Task non permetterà alcuna forma di debug diverso da soluzioni alternative come scrivere regolarmente i progressi, le finestre di messaggio ecc

L'elemento di script Task Flow Control consentirà agli sviluppatori di eseguire il debug del codice SSIS

Trovato questo recentemente. :)

0

Assicurati che anche tu esegua il pacchetto completo. Il debugger per i punti di interruzione del pacchetto non entrerà in azione fino a quando non lo farai.

debug attività di script funziona in modo simile.