如何不使用第三方工具查看SQL2005的日志?

carkiller 2009-09-17 10:29:14
本机装有SQL2005的数据库,现在想查看数据库操作的日志,网上一般都说用LogExplorer,有没有什么办法不用第三方插件就能查看SQL2005的日志呢?
...全文
1031 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ninja 2012-02-22
  • 打赏
  • 举报
回复
logexplorer比較方便,請不要亂用。
billpu 2009-09-17
  • 打赏
  • 举报
回复
微软的细节问题只透露给luiment的就是logexplorer的那家公司 他们是微软的金牌合作伙伴
在微软有个专门的给他们的办公室和电话
carkiller 2009-09-17
  • 打赏
  • 举报
回复
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )

参数:
Dbid or dbname - 任一数据库的ID或名字

type - 输出结果的类型:

0 - 最少信息(operation, context, transaction id)

1 - 更多信息(plus flags, tags, row length)

2 - 非常详细的信息(plus object name, index name,page id, slot id)

3 - 每种操作的全部信息

4 - 每种操作的全部信息加上该事务的16进制信息

默认 type = 0

要查看MSATER数据库的事务日志可以用以下命令:

DBCC log (master)

可以这么用,在2005中,但是查出的数据分析起来就有点麻烦了
xiequan2 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wujinjian2008n 的回复:]
引用 6 楼 xiequan2 的回复:
  1:不过你可以用profile自己订制一个跟踪,把记录写到表里或者文件里,就可以查看了

2:SELECT  *  From  ::fn_dblog(Default,Default)


SELECT  *  From  ::fn_dblog(Default,Default)

查询出来的结果看不懂啊
[/Quote]
微软没有公布这个细节,只能看大致
wujinjian2008n 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soft_wsx 的回复:]
引用 9 楼 wujinjian2008n 的回复:
引用 8 楼 fredrickhu 的回复:
DBCC CHECKLOG


怎么用啊
google,baidu
[/Quote]

你知道就说一下吗
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wujinjian2008n 的回复:]
引用 8 楼 fredrickhu 的回复:
DBCC CHECKLOG


怎么用啊
[/Quote]google,baidu
wujinjian2008n 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fredrickhu 的回复:]
DBCC CHECKLOG
[/Quote]

怎么用啊
--小F-- 2009-09-17
  • 打赏
  • 举报
回复
DBCC CHECKLOG
wujinjian2008n 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiequan2 的回复:]
  1:不过你可以用profile自己订制一个跟踪,把记录写到表里或者文件里,就可以查看了

2:SELECT  *  From  ::fn_dblog(Default,Default) 
[/Quote]

SELECT * From ::fn_dblog(Default,Default)

查询出来的结果看不懂啊
xiequan2 2009-09-17
  • 打赏
  • 举报
回复
1:不过你可以用profile自己订制一个跟踪,把记录写到表里或者文件里,就可以查看了

2:SELECT * From ::fn_dblog(Default,Default)
carkiller 2009-09-17
  • 打赏
  • 举报
回复
都说了,不要用LogExplorer!!
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
使用方法
打开log   explorer   file=>attach   log   file->选择服务器和登陆方式->connect->   
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
t-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....

------------------------------------------------------------------------
log explorer使用的一个问题

1)对数据库做了完全 差异 和日志备份
备份时选用了删除事务日志中不活动的条目
再用log explorer打试图看日志时
提示no log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才的记录了


如果不选用了删除事务日志中不活动的条目
再用log explorer打试图看日志时,就能看到原来的日志

2)修改了其中一霰碇械牟糠质荩耸庇胠og explorer看日志,可以作日志恢复

3)然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示no log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复.


发表者:frewin
恢复过程:]
使用工具是logexplore,(下载地址:http://five.ttdown.com/l/log%20explorer%20for%20sql%20serverv%20v3.21.kg.exe)

安装后打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录,
点击“view ddl commands”里面就有很多drop table 命令
点击下面的“undo”按钮是生成表结构的语句
点击下面的“salvage”按钮是生成插入语句的


我是按照上述方法的“salvage”来生成被删除表的insert语句,实际上用这个方法生成的sql脚本已经包含了createtable。该过程速度大概用了8个小时,当时觉得慢,后来相比恢复过程,这个速度简直快的不行。最大的表脚本生成后超过1g。

生成所有的sql脚本后,防止万一,我将数据库停下,并把date文件夹的log和.mdf文件拷出来,文件大小总共为5.7g

此后开始进行正式的恢复工作。新建一个数据库,先试着用sql查询分析器运行了一个小表的脚本,完全没有问题。但后来发现导入比较大的sql脚本文件,查询分析器就报错了。请教了realgz得知logexplorer本身对大脚本有良好支持,因此改用logexplorer--》run sql script 功能来运行脚本。果然大文件也可以恢复了。

但开始运行后发现包含有ntext字段的表恢复起来异常缓慢,打开一个包含ntext字段的表的恢复脚本发现里面使用writetext来写入数据。恢复一个30万数据的表居然用了将近12小时的时间,而数据库中又有大量这样的表,为了加快数据,我又在几个机器上装了logexplorer加入恢复过程,终于经过3天的时间,全部的表都搞的差不多了,不过恢复过程有少量的错误。

接下来我将几个机器的表导到同一个数据库中,不过此时恢复的表是没有包含索引、标识等扩展属性的,因此需要重新建立索引、标识、默认值以及触发器。在建立主键的时候发现居然有数据重复。。。没办法只好删除重复数据。

使用 select distinct * into t_new from t_old 可以删除重复数据,但遇到有ntext字段的表是不能用这个方法的,最后只好用 delete from t_table where id in (select id from t_table a where (select count(*) from t_table a where a.id = id ) > 1 )直接删除了有重复数据的记录

经过72小时的努力,99.9%的数据恢复。并于4月8日晚上恢复运行网站。

这时候部分用户反映无法登陆,一查发现是有小部分数据丢失,也就是logexplorer里报错误的那些数据……没办法,我重新用uedit打开sql脚本,查找这些数据,发现还在,仔细一看发现,这些数据里都有部分内容里使用大量的回车,logexplorer无法识别,因此才出的错误。

呵呵,顾客是上帝,没办法,只好将用户表重新在本地恢复一次,遇到错误就记录下id,然后再考出sql脚本到查询分析器运行

现在建立了维护计划,每个星期做一次完整备份。另外操作数据库的流程也变的规范,防止此类事故出现


liangCK 2009-09-17
  • 打赏
  • 举报
回复
DBCC LOG
mugua604 2009-09-17
  • 打赏
  • 举报
回复
logexplorer
billpu 2009-09-17
  • 打赏
  • 举报
回复
有的 logexplorer是根据系统表里的记录输出的 具体哪个忘记了...反正是个text字段 sys啥表

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧