使用 SQL Server 2005(和 2008)
使用 DTS 包,我可以打开它,它会列出包的上次修改日期。我有一些 SSIS 包,我需要知道自上次发布以来它们是否被修改过。有什么方法可以知道它们上次修改的时间吗?
如果我右击,唯一看起来还不错的选项是“报告”,但那里唯一的选项是一份包含包创建日期和一些版本信息的常规报告。我已经知道程序员没有更改任何版本默认值,因此那里没有有用的信息。
我想要最后修改日期或最后导入日期或其他信息,以便让我知道是否需要担心自上次发布以来其中一些内容是否被修改。
编辑:该文件存储在 MSDB 中。
答案1
如果包存储在 MSDB 中,则不会,唯一的日期/时间戳是创建日期。修改日期不会被跟踪。您需要在重新部署之前删除包才能跟踪修改日期,这本质上只是强制将创建日期作为重新部署日期。
在 SQL 2005 中,存储在 MSDB 中的包的元数据存储在 msdb.dbo.sysdtspackages 和 msdb.dbo.sysdtspackages90 中,因此您可以在其中一个表上运行 SELECT 来查看包。对于 SQL 2008 及更高版本,表名称为sysssispackages
。
SELECT * from msdb.dbo.sysdtspackages90 WHERE name='mypackagename'
如果服务器上的包位置是文件系统,则可以通过 Windows 资源管理器(或任何您想要使用的文件系统工具)获取包文件的修改日期。SQL 2005 的路径是[install drive]:\Program Files\Microsoft SQL Server\90\DTS\Packages\
。对于 SQL 2008,将 90 替换为 100;对于 SQL 2012,将 90 替换为 110。
否则,我认为最好的办法是确保生产服务器的安全性足够,以便只有那些应该部署软件包的人才能部署软件包,然后在开发环境中跟踪发布日期(源代码控制等)。但这并不能真正确保生产不会在不知情的情况下发生变化……
答案2
这是一篇关于如何从 SSIS 包中检索信息的很棒的文章。它帮助我找到了过去需要的信息,可能对你也有用: