查找 SQL 数据库的部署数据

Finding deployment data to a SQL Database

为了维护我们 CMDB 中的数据库版本,我必须获得由第三方公司部署到我们服务器的一些数据库的版本。

是否有系统 table、视图或过程允许我查看有关 SQL 数据库的最近部署(更新脚本的代码更改)的信息?

你有三个选择。

首先,您可以基于 table 和 ddl 触发器构建自己的日志记录,后者将记录任何过程中的每个更改等。

其次,您可以跟踪其中一个系统的变化 tables:

select * from sys.all_sql_modules -- Get the sourcecode of each proc (and track it)
select * from sys.objects -- Get information which object is modified at which date

第三,您可以通过阅读 sql 服务器本身的跟踪日志并过滤 drop/create 事件来对最近的更改进行逆向工程。 (需要 SA 许可)

-- Get the current server trace file 
select * 
from fn_trace_getinfo(NULL)
where property=2
and traceid = 1

-- Copy value from the query above and paste it here
select * 
from fn_trace_gettable('[PASTE PATH HERE!]', -1) 
where EventClass IN(46,47) -- Create/Drop Object

希望有一种解决方案对您有所帮助。

但顺便说一下。另一个想法是,如果您的工作流程允许这样做。只需使用 SSDT 创建部署包并跟踪您的更改。

此致, 离子