Sto cercando qualcosa per estrarre tutte le query SQL presenti nel mio pacchetto SSIS/DTSX. Ma nulla mi sta aiutando fino ad ora.Estrazione di istruzioni SQL da un pacchetto SSIS/DTSX
Ho già dato un'occhiata alle API Microsoft.SqlServer.DTS di Microsoft. Ma stanno estraendo alcune domande direttamente. Ma le query che sono presenti in DTS: variabile TAG, non vengono estratte.
Voglio qualcosa in .Net framework. Poiché ho bisogno di utilizzare l'output per eseguire anche altri compiti. Sto usando C#.
Codice di esempio come segue. Non affronta tutte le situazioni
// this function takes the list of task hosts as input
// and gives all the queries present in taskhosts.
public static string ExtractQueriesFromTasks(List<TaskHost> Tasks)
{
string src_query = "";
foreach (TaskHost executable in Tasks)
{
DtsContainer Seq_container = (DtsContainer)executable;
if (executable.InnerObject.GetType().Name == "ExecuteSQLTask")
{
ExecuteSQLTask sqlTask = (ExecuteSQLTask)executable.InnerObject;
string src_query2 = sqlTask.SqlStatementSource;
src_query = src_query + "\n" + src_query2.ToUpper();
}
if (executable.InnerObject.GetType().Name == "__ComObject")
{
IDTSPipeline100 sqlTask = (IDTSPipeline100)executable.InnerObject;
Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(executable.InnerObject));
//ExecuteSQLTask sqlTask = (ExecuteSQLTask)executable.InnerObject;
//string src_query2 = sqlTask.SqlStatementSource;
//src_query = src_query + "\n" + src_query2.ToUpper();
}
if (executable.InnerObject.GetType().Name == "ScriptTask")
{
ExecuteSQLTask sqlTask = (ExecuteSQLTask)executable.InnerObject;
string src_query2 = sqlTask.SqlStatementSource;
src_query = src_query + "\n" + src_query2.ToUpper();
}
}
return src_query;
}
Ci sono alcuni luoghi si potrebbe avere una query in un pacchetto SSIS. Hai veramente bisogno di tutti questi posti o c'è un sottoinsieme da cui hai richiesto le query? Sono anche un po 'perso sul problema con le query in una variabile, stai dicendo che sei riuscito a capire come utilizzare l'API per enumerare il modello di oggetti ma non riesci a capire come estrarre il valore di una variabile? Infine, se una query è parametrizzata o costruita con un'espressione, come ti aspetti che venga segnalata? Pubblica il codice esistente che hai dato che può fornirci un punto di partenza invece di fare tutto – billinkc
Sì, voglio estrarre tutte le query ovunque possano essere possibili nel pacchetto SSIS. Sì, ho capito come utilizzare l'API ma non riuscivo a capire dove sono memorizzati i valori delle variabili del modello oggetto. Si prega di leggere la mia risposta per lo snippet di codice. –
Qualcuno può aiutarmi su questo? –