Schema Changes History数据从哪里来?
2012-07-29 09:38
183 查看
SQL Server提供了Schema Changes History report可以用来追踪DDL相关信息。 但是Schema Changes History report的数据是从哪里来的呢?
首先我启动SQL Profiler trace然后打开Schema Changes History report(Management studio->Report->Standard report->Schema Changes History report)
从Profiler trace我看到下面的SQL 语句:
select@curr_tracefilename
= pathfrom
sys.traces
where is_default = 1
;
set@curr_tracefilename
= reverse(@curr_tracefilename)
select@indx
= PATINDEX(''%\%'', @curr_tracefilename)
set@curr_tracefilename
= reverse(@curr_tracefilename)
set@base_tracefilename
= LEFT(@curr_tracefilename,len(@curr_tracefilename)- @indx)
+ ''\log.trc'';
insert into @temp_trace
selectObjectName
, DatabaseName
, StartTime
, EventClass
, EventSubClass
, ObjectType
, ServerName
, LoginName
, ApplicationName
, ''temp''
from ::fn_trace_gettable( @base_tracefilename,default
)
whereEventClass
in(46,47,164)
and EventSubclass = 0and DatabaseID
<>2
update@temp_trace
set ddl_operation =
''CREATE''
where event_class =46
update@temp_trace
set ddl_operation =
''DROP''
where event_class =47
update@temp_trace
set ddl_operation =
''ALTER''
where event_class =164
select@d1 =
min(start_time)
from @temp_trace
set@diff=
datediff(hh,@d1,getdate())
set@diff=@diff/24;
select @diff
as difference
, @d1 as
date
, object_type
asobj_type_desc
, *
from@temp_trace
where object_type not
in(21587)
order by start_time
desc
end
我们看一下event_class 46,47,164代表什么:
select trace_event_id,name from sys.trace_events where trace_event_id in ('46','47','164')
trace_event_id name
-------------- --------------------------------------------------------------------------------------------------------------------------------
46 Object:Created
47 Object:Deleted
164 Object:Altered
(3 row(s) affected)
从上面的内容我们可以看到这个Report只是从Default trace中抓取了创建删除和更改三个事件,然后展现给我们。 所以如果我们Disable了Default trace file,就无法从这张Report中查询到数据。
另外如果DDL发生在当前Default trace file开始之前也是显示不出来的,但是我们可以将上面的脚本修改一下,直接用当时的Trace File就可以获得相关信息了(SQL Server 默认会保存5份Trace文件)
首先我启动SQL Profiler trace然后打开Schema Changes History report(Management studio->Report->Standard report->Schema Changes History report)
从Profiler trace我看到下面的SQL 语句:
select@curr_tracefilename
= pathfrom
sys.traces
where is_default = 1
;
set@curr_tracefilename
= reverse(@curr_tracefilename)
select@indx
= PATINDEX(''%\%'', @curr_tracefilename)
set@curr_tracefilename
= reverse(@curr_tracefilename)
set@base_tracefilename
= LEFT(@curr_tracefilename,len(@curr_tracefilename)- @indx)
+ ''\log.trc'';
insert into @temp_trace
selectObjectName
, DatabaseName
, StartTime
, EventClass
, EventSubClass
, ObjectType
, ServerName
, LoginName
, ApplicationName
, ''temp''
from ::fn_trace_gettable( @base_tracefilename,default
)
whereEventClass
in(46,47,164)
and EventSubclass = 0and DatabaseID
<>2
update@temp_trace
set ddl_operation =
''CREATE''
where event_class =46
update@temp_trace
set ddl_operation =
''DROP''
where event_class =47
update@temp_trace
set ddl_operation =
''ALTER''
where event_class =164
select@d1 =
min(start_time)
from @temp_trace
set@diff=
datediff(hh,@d1,getdate())
set@diff=@diff/24;
select @diff
as difference
, @d1 as
date
, object_type
asobj_type_desc
, *
from@temp_trace
where object_type not
in(21587)
order by start_time
desc
end
我们看一下event_class 46,47,164代表什么:
select trace_event_id,name from sys.trace_events where trace_event_id in ('46','47','164')
trace_event_id name
-------------- --------------------------------------------------------------------------------------------------------------------------------
46 Object:Created
47 Object:Deleted
164 Object:Altered
(3 row(s) affected)
从上面的内容我们可以看到这个Report只是从Default trace中抓取了创建删除和更改三个事件,然后展现给我们。 所以如果我们Disable了Default trace file,就无法从这张Report中查询到数据。
另外如果DDL发生在当前Default trace file开始之前也是显示不出来的,但是我们可以将上面的脚本修改一下,直接用当时的Trace File就可以获得相关信息了(SQL Server 默认会保存5份Trace文件)
相关文章推荐
- [Step By Step]使用SAP Business Objects Data Services将XML数据导入到SAP HANA中(XML XSD Schema)
- 思考mysql内核之初级系列5---information_schema不是innodb数据字典
- MySQL使用pt-online-change-schema工具在线修改1.6亿级数据表结构
- Flask-Migrate用法(Target database is not up to date原因、No changes in schema detected原因)
- 数据流字符串部分缺失问题以及uncompress解压缩数据流从哪里开始
- Schema与数据类型优化
- 系统程序员成长计划-你的数据放在哪里(下)
- pt-online-schema-change 修改主键导致数据删除失败的问题调查
- mysql高性能笔记-schema与数据类型一
- 大数据IMF传奇行动 Spark history-server 配置 !运维人员的强大工具
- Tracking Database Schema Changes with DbPro
- 《高性能MySQL》读书笔记--Schema与数据类型优化
- information_schema数据库的使用 ->查询一个数据的所有记录总数
- Trac - Trac Database Schema - 数据结构
- 大数据的核心价值主要体现在哪里
- 用stream在Schema级实现数据复制
- DataRabbit 轻量的数据访问框架(09) -- IDataSchemaAccesser
- Laravel学习:Schema Builder数据表字段类型
- 模式自由(Schema-free)和数据存储的非格式化趋势
- 数据存在哪里Java