tri*_*ati 13 sql sql-server sql-server-2012
我有一个包含一百多个表的数据库.我不断向现有表添加列(如果需要),我还添加了几个新表.
现在我想查看我在过去3个月中所做的更改.MS SQL Server 2012中是否有针对该特定数据库的活动日志来跟踪更改.
也许这可以让你在中途.sys.objects
有创建和修改日期但遗憾的sys.columns
是没有.但是,添加的最新列将具有更高的column_id.我不知道你能够轻松地选出已删除的列.请注意,修改日期可以反映列更改以外的更改.
select s.name [schema], o.name [table], o.modify_date [table_modify_date], c.column_id, c.name
from sys.schemas s
join sys.objects o on o.schema_id = s.schema_id
left join sys.columns c on c.object_id = o.object_id
where o.type = 'U' --user tables only
and o.modify_date >= dateadd(M,-3, getdate())
order by s.name, o.name, column_id;
Run Code Online (Sandbox Code Playgroud)
为了在将来更轻松地进行此审计,您可以创建一个DDL触发器,如果您使用类似SSDT数据项目的内容来管理更改,则会将所有架构更改记录到表或源代码管理中.
现在,你的选择是有限的,你可以在下面尝试,并检查他们是否帮助你,现在..
1.如果启用了审核,则可以跟踪更改
要检查,如果您启用了审核,您可以使用以下查询..
select * from sys.dm_server_audit_status
Run Code Online (Sandbox Code Playgroud)
如果您尚未启用审核,则可以启用它,如下所示:SQL Server审核简介 ..我不建议启用审核,除非您需要捕获除问题中提到的内容之外的其他内容
2.Default跟踪还捕获创建的表,但是当空间已满时,这会使用翻转文件机制来覆盖最后的文件,所以你可能运气不好(因为你要求三个月的范围),但试试这个:什么我可以从SQL Server默认获取事件信息吗?找出了解默认跟踪提供的所有内容
我会使用此选项并尝试备份这些文件,具体取决于它们汇总的时间(因为您只需要检查表更改)
3.最后,最后一个选项是查询Tlog
select * from fn_dblog(null,null) where [transaction name]='CREATE TABLE'
Run Code Online (Sandbox Code Playgroud)
只有在Tlog备份超过三个月且您还需要还原它们时,上述Tlog选项才有效
小智 4
要检查过去的所有活动,您可以使用 MSSQL Audit。这是随时跟踪任何变化的最佳方式。请检查 https://msdn.microsoft.com/en-us/library/cc280386.aspx
归档时间: |
|
查看次数: |
14510 次 |
最近记录: |