Hi Harinathu,
did you figure out how to do? If yes, please share.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
I need to get list of objects depends in each SSIS package using SQL scripts or any other approach autoprocess.
Example ssis solution have 2 packages.
package1.dtsx
package2.dtsx
Package1.dtsx have 5 tasks and 2 are execute sql task and 3 are data flow tasks. Here 1executesql used usp_emp procedured
and 2nd executsqltask used usp_dept procedure and others 3 dataflow task sourc : is emp and destination tables also emp.
Now I want get output like
package name |packagefoldepath | connectionstring | sqlobjects |variables |tasknames
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;"| usp_emp | |executesqltask1
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |usp_dept | |executesqltask2
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft1_oledsoure
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft1_oleeddestinaton
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft2_oledsoure
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft2_oleeddestinaton
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft3_oledsoure
packag1.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;" |emp | |dft3_oleeddestinaton
packag2.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=False;"| | usp_var and sp |executesqltask2
packag2.dtsx |FolderName/ProjectName/Package1.dtsx |"Data Source=.;Initial Catalog=test;Provider=SQLNLocalHost.test;Auto Translate=Fal|se | |loca_var and prcodurename|executesql |df|_oleeddestinaton
I have tried like below
WITH PackageXML AS (
SELECT
f.folder_name + '/' + p.project_name + '/' + pk.package_name AS package_folder_path,
CAST(pk.package_data AS XML) AS package_xml
FROM
SSISDB.catalog.folders f
JOIN
SSISDB.catalog.projects p ON f.folder_id = p.folder_id
JOIN
SSISDB.catalog.packages pk ON p.project_id = pk.project_id
)
SELECT
px.package_folder_path AS package_name,
c.value('(DTS:ObjectData/DTS:ConnectionManager/DTS:Property[@DTS:Name="ConnectionString"])[1]', 'NVARCHAR(MAX)') AS connection_string,
e.value('(DTS:Property[@DTS:Name="SqlStatementSource"])[1]', 'NVARCHAR(MAX)') AS sql_objects,
v.value('(DTS:Variable/DTS:Property[@DTS:Name="Value"])[1]', 'NVARCHAR(MAX)') AS variables,
t.value('@DTS:Name', 'NVARCHAR(255)') AS task_name
FROM
PackageXML px
CROSS APPLY package_xml.nodes('//DTS:Executable') AS Tasks(t)
OUTER APPLY package_xml.nodes('//DTS:ConnectionManagers/DTS:ConnectionManager') AS Connections(c)
OUTER APPLY package_xml.nodes('//DTS:Executable/DTS:ObjectData/DTS:ExecuteSQLTask') AS SQLTasks(e)
OUTER APPLY package_xml.nodes('//DTS:Variables/DTS:Variable') AS Vars(v)
WHERE
t.value('@DTS:ExecutableType', 'NVARCHAR(255)') IN ('SSIS.ExecuteSQLTask', 'SSIS.DataFlow');
but this query not given expect result and package_data always getting null values. Could someone please tell me how to write query to achieve this task in SQL Server
Hi Harinathu,
did you figure out how to do? If yes, please share.