sql server - Extracting SQL statements from a SSIS/DTSX package -


i looking extract sql queries present in ssis/dtsx package. nothing helping me till now.

i had @ microsoft.sqlserver.dts api's microsoft. extracting queries straight forward. queries present in dts:variable tag, not extracted.

i want in .net framework. need use output perform other task well. using c#.

sample code follows. not address situations

// function takes list of task hosts input // , gives 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; } 

the following query helpful retrieve sql statements inside ssis package

;with xmlnamespaces ('www.microsoft.com/sqlserver/dts'   dts,'www.microsoft.com/sqlserver/dts/tasks/sqltask' sqltask)   -- query extract sql tasks name , sql statement  select pkg.props.value('../../dts:property[@dts:name="objectname"] [1]','varchar(max)') objectname,  pkg.props.value('(@sqltask:sqlstatementsource)[1]', 'nvarchar(max)')  sqlstatement (select cast(pkgblob.bulkcolumn xml) pkgxml  openrowset(bulk 'your dts package name , location path',single_blob)  pkgblob) t cross apply pkgxml.nodes('//dts:objectdata//sqltask:sqltaskdata') pkg(props)  union   -- query extract dts pipline task name , sqlcommand   select pkg.props.value('../../../../dts:property[@dts:name="objectname"] [1]','varchar(max)') objectname,  pkg.props.value('data(./properties/property[@name=''sqlcommand''])[1]',  'varchar(max)') sqlstatement from(select cast(pkgblob.bulkcolumn xml)   pkgxml openrowset(bulk 'your dts package name , location   path',single_blob) pkgblob) t cross apply  pkgxml.nodes('//dts:executable//pipeline//components//component') pkg(props)  pkg.props.value('data(./properties/property[@name=''sqlcommand'']) [1]', 'varchar(max)') <>'' 

Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -