如何获取数据库日志的lsn 谢谢

camish 2005-03-04 12:17:44
我想获取数据库最后一条日志的lsn,请问如何获取?谢谢
...全文
336 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
camish 2005-03-04
  • 打赏
  • 举报
回复
非常感谢。
如果我想获取的是 operation为COMMIT_XACTD的最后一条日志呢?
NinGoo 2005-03-04
  • 打赏
  • 举报
回复
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

NinGoo 2005-03-04
  • 打赏
  • 举报
回复

dbcc log (dbname)
camish 2005-03-04
  • 打赏
  • 举报
回复
其实我这里想问的是 DBCC Log 命令的运行机理。
DBCC Log 返回的是数据库日志的最后若干条日志记录。那么每次运行它时,它是如何决定这一次应该返回几条记录?它如何决定某个日志记录之后的日志记录返回,而该日志记录之前的记录不返回呢?
谢谢
camish 2005-03-04
  • 打赏
  • 举报
回复
谢谢邹建大哥。但是我的意思是:
例如有一次,我执行DBCC log(RepTest,2)命令,结果返回的是2条记录。那么为什么我这一次获取的是2条,而不是3条,或是1条。这时候数据库日志里面肯定不止2条日志。这里面是否有什么机制或者原因呢?
谢谢
zjcxc 2005-03-04
  • 打赏
  • 举报
回复
create table #t([Current LSN] char(22),Operation varchar(50),Context varchar(50),[Transaction ID] char(13))
insert #t exec('dbcc log (库名,4)')

这个已经把结果输出到临时表了,至少条件,你自己在查临时表的时候加吧
camish 2005-03-04
  • 打赏
  • 举报
回复
非常感谢。
我试了一下。DBCC Log 返回了最后若干条日志记录。
那么它返回的日志记录符合那些条件?
肯定不是数量,因为有时候返回的条数多,有时候返回的条数少。
zjcxc 2005-03-04
  • 打赏
  • 举报
回复
create table #t([Current LSN] char(22),Operation varchar(50),Context varchar(50),[Transaction ID] char(13))
insert #t exec('dbcc log (库名,4)')
select top 1
*
from #t
where Operation='COMMIT_XACTD'
order by [Current LSN] desc
drop table #t

27,581

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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