0

在我的 SQL Server 实例中,我们使用 SSIS 目录来存储项目和包。在过去的几天里,我的团队遇到了一个问题,即 SQL 代理作业由于包引用而失败/SSISDB/Jobs/ProjectName/Package.dtsx。好吧,现在该软件包不存在。它有可能被重命名或删除,但它是一个旧包,字面意思是 Package.dtsx,所以我们不确定它到底做了什么。

我正在加载此事件之前的 msdb、master 和 SSISDB 数据库的备份,以查看是否可以提取实际的包定义、二进制代码或告诉我它在做什么的东西。所以我的最终问题是对于存储在 SSIS 目录中的包,有没有办法从某个地方提取 .dtsx 文件,以便我可以重新创建它(并更好地命名它),或者如果它不再重要,我可以确认我们不不需要它。

4

2 回答 2

1

您可以使用 Visual Studio集成项目导入向导项目类型从 SSIS 目录中导出带有感兴趣包的整个项目。您需要对 SSISDB 的管理员访问权限才能执行此操作。只需指定要导出的服务器和项目。
如果您想在没有 Visual Studio 的情况下在纯 SQL 中执行此操作,我的 HO 最简单的方法如下:

  1. 在某些 SQL DB 上设置 FileTables。

  2. 执行以下 t-SQL 语句:

    DECLARE @t table
    (
    v varbinary(max)
    )
    
    INSERT @t
    EXEC SSISDB.catalog.get_project '<Project Path>','<Project Name>'
    INSERT [dbo].[MyFileTable] (name,file_stream)
    SELECT 'ExportedProject.ispac',v
    FROM @t  
    

这将ExportedProject.ispac在 FileTable 文件夹中生成一个文件。

于 2020-07-27T10:33:32.490 回答
0

值得庆幸的是,项目目录存储在一个网络驱动器上,该驱动器每天有 2 个存档副本存储了几个星期。我能够进入项目文件夹的存档副本,在Path\ProjectFolder\obj\Developement\那里我找到了带有 Date Modified 的 Package.dtsx 文件,证明它是我正在寻找的包。

我遇到的真正问题是试图恢复丢失的包,解决方案如上(目录的存档副本)。但是 Ferdipux 回答了在如何提取 SSIS 目录项目中提出的问题。

于 2020-07-23T20:07:50.817 回答