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
Post a Comment