get depends objects for ssis packages

harinathu 6 Reputation points
2025-03-31T23:37:34.3866667+00:00

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

Transact-SQL
Transact-SQL
A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
4,705 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. Spunny 366 Reputation points
    2025-04-16T16:26:38.6633333+00:00

    Hi Harinathu,

    did you figure out how to do? If yes, please share.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.