Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SSIS目录中查看包定义?_Sql Server_Ssis - Fatal编程技术网

Sql server 如何在SSIS目录中查看包定义?

Sql server 如何在SSIS目录中查看包定义?,sql-server,ssis,Sql Server,Ssis,在我的SQL Server实例中,我们使用SSIS目录来存储项目和包。在过去几天里,我的团队遇到了一个问题,一个SQL代理作业失败,原因是一个包引用了/SSISDB/Jobs/ProjectName/package.dtsx。现在这个包裹不存在了。它有可能被重命名或删除,但它是一个旧包,字面上命名为package.dtsx,所以我们甚至不确定它做了什么 我正在加载此事件之前的msdb、master和SSIDB数据库的备份,以查看是否可以提取实际的包定义、二进制代码或其他内容来告诉我它在做什么。因

在我的SQL Server实例中,我们使用SSIS目录来存储项目和包。在过去几天里,我的团队遇到了一个问题,一个SQL代理作业失败,原因是一个包引用了
/SSISDB/Jobs/ProjectName/package.dtsx
。现在这个包裹不存在了。它有可能被重命名或删除,但它是一个旧包,字面上命名为package.dtsx,所以我们甚至不确定它做了什么


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

谢天谢地,项目目录存储在一个网络驱动器上,其中有两个每日存档的副本,存储了几个星期。我可以将项目文件夹的存档副本放入
Path\ProjectFolder\obj\Developement\
中,在那里我找到了Package.dtsx文件,其中的日期被修改,证明它就是我要找的包


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

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

  • 在某些SQL数据库上设置文件表

  • 执行以下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  
    
    DECLARE@t表
    (
    v变量二进制(最大值)
    )
    插入@t
    EXEC SSISDB.catalog.get_项目“”,“”
    插入[dbo].[MyFileTable](名称、文件\u流)
    选择“ExportedProject.ispac”,v
    来自@t
    

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

    您无法解密存储在SSIS目录中的包。这是故意的。您可以从数据库打开该项目,但您需要使用SSIDB设置创建一个新实例,还原所有密钥等。当然,您在源代码管理中有SSIS项目,因此这应该是您的第一个调用点。默认情况下,项目也在SSIDB中启用了版本(项目在SSMS中,并选择
    versions…
    ). 您是否(临时)将已部署的版本还原为旧版本,以查看是否会弹出包?但是,SSIS项目源代码管理应该在您要查看的地方。@Larnu很遗憾,我们在项目目录中没有这个包。这是我想到它可能被意外重命名的唯一原因。问题是,项目目录中所有现有的.dtsx文件都显示了4月份最后一次修改的日期,名称更改/删除发生在上周。源代码管理还监视文件名的更改。我想你是在暗示你没有唱源代码管理。如果是这样的话,你该这么做了