【问题标题】:How to search SSIS Projects for references to specific tables?如何在 SSIS 项目中搜索对特定表的引用?
【发布时间】:2020-06-19 11:00:51
【问题描述】:

情况

在我的新角色中,我需要检查填充我们几个表的 ETL 逻辑。我们部署 SSIS 项目来管理我们的 ETL 工作流程。我们经常会收到反馈说特定列可能没有预期的数据。在这种情况下,我将检查 ETL 逻辑以确保我们正确地输入数据。

并发症

确定哪些 SSIS 项目填充某些表对我来说非常耗时。我们有很多 SSIS 包。

问题

我可以编写查询来搜索集成服务目录(SSIS 项目)以获取表引用吗?

我们的 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 或用于搜索表引用的代码。另外,我知道我可以使用 Powershell 搜索 SSIS 项目,但似乎这些都存储在服务器上,我不知道如何从 PowerShell 中找到要搜索的文件。

我们使用 SQL Server 2016。

【问题讨论】:

    标签: sql-server powershell ssis


    【解决方案1】:

    表引用将位于 SSIS 包的 XML 中。如果您右键单击 .dtsx 并选择使用 notepad++ 编辑,这将打开 xml 并允许您查看正在调用的内容。进入 Windows 搜索框的快速方法,输入“索引选项”,添加保存 SSIS 解决方案的文件夹,转到高级选项选择“文件类型”并将索引类型更改为“索引”属性和文件选项。

    现在,当您转到文件夹并输入违规列的表名时,受影响的软件包将出现。这种方法唯一的问题是,如果您有一些只是 EXEC usp...xyz 的 EXECUTE SQL 任务。它不会找到表名。然后,您需要索引已保存存储过程的 .sql 以查看是否引用了该表名。 希望这会有所帮助。

    【讨论】:

    • 谢谢,这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多