如何在 SSIS 项目中搜索特定表的引用?
How to search SSIS Projects for references to specific tables?
情况
在我的新角色中,我需要检查填充我们几个 table 的 ETL 逻辑。我们部署 SSIS 项目来管理我们的 ETL 工作流。我们经常收到反馈,指出特定列可能没有预期的数据。在这种情况下,我将检查 ETL 逻辑以确保我们正确地引入了数据。
并发症
确定哪些 SSIS 项目填充了某些 table 对我来说非常耗时。我们有很多 SSIS 包。
问题
我可以编写查询来搜索集成服务目录(SSIS 项目)以获得 table 参考吗?
我们的 SSIS 项目存储在名为 Integration Services Catalog 的文件夹中的单独数据库中。包未存储在 msdb 系统数据库中。
SELECT
f.NAME AS FolderName
,sib.description
,sib.name as ProjectName
,sib.created_time
,sib.project_id
FROM [SSISDB].[internal].[projects] SIB
INNER JOIN internal.folders F ON F.folder_id = SIB.folder_id
我找到了有关这些项目的信息,但我看不到任何 XML 或搜索 table 引用的代码。另外,我知道我可以用 Powershell 搜索 SSIS 项目,但似乎这些都存储在服务器上,我不知道如何从 PowerShell 中找到要搜索的文件。
我们使用 SQL Server 2016。
table 引用将在 SSIS 包的 XML 内。如果您右键单击 .dtsx 并使用 notepad++ select 编辑,这将打开 xml 并允许您查看正在调用的内容。快速进入 windows 搜索框,输入 'Indexing Options',添加保存 SSIS 解决方案的文件夹,转到高级选项 select 'file types' 并将索引类型更改为 'Index Properties and File Options'.
现在,当您转到文件夹并输入有问题的列的 table 名称时,受影响的包将出现。这种方法的唯一问题是,如果您有一些 EXECUTE SQL 任务只是 EXEC usp...xyz。它不会找到 table 名称。然后您需要索引已保存存储过程的 .sql 以查看是否引用了 table 名称。
希望这有帮助。
情况
在我的新角色中,我需要检查填充我们几个 table 的 ETL 逻辑。我们部署 SSIS 项目来管理我们的 ETL 工作流。我们经常收到反馈,指出特定列可能没有预期的数据。在这种情况下,我将检查 ETL 逻辑以确保我们正确地引入了数据。
并发症
确定哪些 SSIS 项目填充了某些 table 对我来说非常耗时。我们有很多 SSIS 包。
问题
我可以编写查询来搜索集成服务目录(SSIS 项目)以获得 table 参考吗?
我们的 SSIS 项目存储在名为 Integration Services Catalog 的文件夹中的单独数据库中。包未存储在 msdb 系统数据库中。
SELECT
f.NAME AS FolderName
,sib.description
,sib.name as ProjectName
,sib.created_time
,sib.project_id
FROM [SSISDB].[internal].[projects] SIB
INNER JOIN internal.folders F ON F.folder_id = SIB.folder_id
我找到了有关这些项目的信息,但我看不到任何 XML 或搜索 table 引用的代码。另外,我知道我可以用 Powershell 搜索 SSIS 项目,但似乎这些都存储在服务器上,我不知道如何从 PowerShell 中找到要搜索的文件。
我们使用 SQL Server 2016。
table 引用将在 SSIS 包的 XML 内。如果您右键单击 .dtsx 并使用 notepad++ select 编辑,这将打开 xml 并允许您查看正在调用的内容。快速进入 windows 搜索框,输入 'Indexing Options',添加保存 SSIS 解决方案的文件夹,转到高级选项 select 'file types' 并将索引类型更改为 'Index Properties and File Options'.
现在,当您转到文件夹并输入有问题的列的 table 名称时,受影响的包将出现。这种方法的唯一问题是,如果您有一些 EXECUTE SQL 任务只是 EXEC usp...xyz。它不会找到 table 名称。然后您需要索引已保存存储过程的 .sql 以查看是否引用了 table 名称。 希望这有帮助。