读取 SQL Server 事务日志

2023-11-23

我们如何读取 SQL Server 事务日志,我知道使用 DBCC 日志(数据库,4),它会生成日志输出,现在我想解码十六进制格式的日志记录。

0x00003E001C000000A500000001000200BE040000000006021D0000000100000018000000(仅部分数据)

有什么方法可以以文本格式读取它或将十六进制数据转换为文本。我想制作一个可以读取日志的工具。可以使用第三方工具,即 ApexSQL,但它们是付费工具。


您可以使用sys.fn_dblog读取事务日志。下面的例子。

SELECT [RowLog Contents 0],
       [RowLog Contents 1],
       [Current LSN],
       Operation,
       Context,
       [Transaction ID],
       AllocUnitId,
       AllocUnitName,
       [Page ID],
       [Slot ID]
FROM sys.fn_dblog(NULL,NULL)
WHERE Context IN ('LCX_MARK_AS_GHOST', 'LCX_HEAP', 'LCX_CLUSTERED') 
AND Operation IN ('LOP_DELETE_ROWS', 'LOP_INSERT_ROWS') 

For a delete and insertIIRC行动[RowLog Contents 0]包含插入和删除的整行。更新有点复杂,因为只能记录部分行。

要解码此行格式,您需要了解行在 SQL Server 内部的存储方式。这本书Microsoft SQL Server 2008 内部结构对此进行了一些详细介绍。您还可以下载SQL Server 内部查看器在这方面提供帮助(我相信源代码马克·拉斯姆森's Orca MDF也可用,大概有一些代码来解码内部行格式)。

有关在 TSQL 中执行此操作的示例,请参阅这篇博文这表明只要项目的目标有限,就完全有可能从日志中提取有用的信息。不过,编写一个完整的日志读取器来应对对象中的架构更改以及稀疏列(以及下一版本中的列存储索引)等内容可能会是一项艰巨的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取 SQL Server 事务日志 的相关文章

  • 带逗号和句点的 SQL Server 2005 货币格式

    有没有办法在 SQL Server 2005 中转换货币字段以对其进行格式化 例如 该字段包含 99966 00 我们希望以这种格式返回 99 966 00 convert varchar cast SalesProducts Price
  • 存储过程和视图有什么区别?

    我对以下几点感到困惑 存储过程和视图有什么区别 在 SQL Server 中 什么时候应该使用存储过程 什么时候应该使用视图 视图是否允许创建可以传递参数的动态查询 哪一个最快 基于什么原因其中一个比另一个更快 视图或存储过程是否永久分配内
  • 如何找到 MS SQL Server 2008 的端口?

    我正在本地计算机上运行 MS SQL Server 2008 我知道默认端口是 1433 但有些情况下它没有侦听该端口 SQL 是 Express 版本 我已经尝试过使用日志 SQL Server Management Studio 注册表
  • 带有检查约束的自定义函数 SQL Server 2008

    我使用 SQL Server 2008 并且有两个现有表 venues and events 我正在尝试创建一个带有检查约束的自定义函数 以确保event expected attendance栏目中的events表总是小于或等于venue
  • 使用 SQL Server 2005 模糊匹配可能的重复项的良好 SQL 策略

    我想在大型数据库中找到与 COMPANYNAME 和 ADDRESSLINE1 等字段匹配的可能的候选重复记录 Example 对于具有以下 COMPANYNAME 的记录 阿克米公司 我希望我的查询能够吐出具有这些 COMPANYNAME
  • t-sql 中的行相乘

    我有下表 ID Number 1 41 5 2 42 5 3 43 5 2 44 5 2 45 5 1 46 5 1 47 5 我需要编写一个查询 该查询将返回不同的 ID 和相应的 Number 列值相乘 对于给定的表结果应该是这样的 I
  • 如何在 Nhibernate 中进行版本控制?

    我不敢相信让别人向我展示一个简单的工作示例是如此困难 这让我相信每个人都只能说得好像他们知道如何去做 但实际上他们并不知道 我将帖子缩短为仅我想要示例执行的操作 也许帖子太长了 吓跑了人们 为了获得这个赏金 我正在寻找一个可以在 VS 20
  • 如何遍历与自身有关系的表?

    我有一个如下表 Node Id Node Name Parent Node Id 1 Root 0 2 Node1 1 3 Node2 1 4 Node3 2 5 Node4 2 6 Node5 5 7 Node6 5 8 Node7 7
  • 在 Java 中实现 SQL CHECKSUM

    我在 SQL Server 2008 中有一个现有数据库 它通过存储过程为现有 PHP Web 应用程序执行用户身份验证 Web 应用程序向存储过程发送一个字符串 无论存储过程如何存储 并使用 SQL Checksum 检查该值 http
  • SQL - 我需要将总值划分为另一个表中的多行

    假设我在 SQL Server 2008 中有以下表 学校桌 School Id Course Id Total Students 1 Acct101 150 1 Acct102 100 2 Acct101 110 2 Acct102 13
  • 从日期时间中获取时间并将其转换为秒?

    我正在运行 SQL Server 2005 从技术上讲 我知道如何从 tsql 日期时间中获取时间 CONVERT VARCHAR 8 GETDATE 108 AS HourMinuteSecond 问题是我有一个日期时间字段 我需要本质上
  • SQL Server 2005 - 应该多久重建一次索引?

    我最近接手了一个项目 他们有一个 SQL 作业设置 每三个小时运行一次 它会重建 ASP NET 会员数据库表中找到的索引 每天重建索引 8 次 这看起来相当高 我每天都会获得大约 2000 个新用户 总共大约有 200 万注册用户 对于正
  • 如何在SQL Server中创建SYS模式的表?

    可以在 SQL Server 2008 sys 架构中创建表吗 我知道可以将表标记为系统 但不能更改架构 有什么窍门吗 您无法将自己的对象添加到 sys 架构中 无法在 sys 架构中创建用户定义的对象 盖尔 埃里克森 MS SQL Ser
  • TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

    如果某些列返回 FALSE 如何显示不同的值 例如 COLUMN BASIC 返回 FALSE 但我需要向用户显示 YES 或 NO 情况为 FALSE 返回 NO 如果是 varchar 或 bit 则处理 NULL case when
  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操
  • 如何避免使用 Cursor 来实现此伪代码 - SQL Server

    CREATE PROCEDURE p processDataFor accountId BEGIN for each item in select from Accounts where accountId accountId and is
  • Sql Server 2008 NVARCHAR 长度-1

    如果长度为 1 这意味着什么 这是我的 tbl 结构 Name nvarchar no 1 正如 JNK 在评论中指出的那样 这意味着MAX Name NVARCHAR MAX 来自MSDN http msdn microsoft com
  • 按空值和非空值分组

    我有一个包含用户 facebook ID 的表 我必须报告谁在使用 facebook 或不使用 对于 facebook 用户 数据行包含一个数字 否则包含 null 我的结果必须是这样的 NbUsers Facebook 1000 no 5

随机推荐

  • 需要在 ExtendScript 中对对象进行 JSON 字符串化

    我正在使用 ExtendScript 处理 Indesign 文档链接的元数据信息 我想使用将对象转换为字符串JSON stringify但是当我使用它时 我收到错误消息 can t execute script in target eng
  • 为什么“if constexpr”的错误分支会被编译?

    为什么这段代码在编译时会出错 我的知识 还有this of if constexpr 说else块不应该被编译 if constexpr true int a 10 else int b 10 错误是 error expected or b
  • .Net Core 上的 OData 未在 $select 上返回正确的结果

    我已将 OData 添加到我的 WebAPI 项目中 版本 核心3 1 OData 7 3 0 测试版 以便与 Core 3 x 配合使用 EF 核心 3 1 0 这是我的startup cs public class Startup pu
  • Django:IE 无法加载本地主机或加载速度非常慢

    我刚刚开始学习 Django 在我的计算机上构建一个项目 运行 Windows 7 64 位 Python 2 7 Django 1 3 基本上 无论我写什么 它都会立即加载到 Chrome 和 Firefox 中 但对于 IE 版本 9
  • 读取 Cobol 生成的文件

    我目前正在编写一个 C 应用程序 该应用程序位于两个现有应用程序之间 我对第二个应用程序的了解是它处理第一个应用程序生成的文件 第一个应用程序是用 Cobol 编写的 脚步 1 Cobol 应用程序 写入一些文件并复制到目录中 2 第二个应
  • 在 vim 中将 ex 命令重定向到 STDOUT

    我正在尝试编写一个命令将 vim 的突出显示信息转储到 STDOUT 我可以成功写入这样的文件 vim redir gt outfile hi redir END q 在这之后 outfile包含正是我想要的 但我宁愿输出到 STDOUT
  • 使用 wget 和 SFTP 获取文件 [关闭]

    Closed 这个问题是无关 目前不接受答案 大家好 我每天晚上在 Linux 服务器上运行一个脚本 该脚本打算使用 wget 和 ftp 协议从另一个服务器获取文件 这些文件位于无法通过 HTTP 访问的文件夹下 这是使用的命令行 wge
  • std::list<>::sort 稳定吗?

    我找不到这个问题的任何明确答案 我想大多数实现都使用稳定的合并排序 但是稳定性是要求还是副作用 C 标准 ISO IEC 14882 2003 说 23 2 2 4 31 Notes 稳定 保留等效元素的相对顺序 如果抛出异常 列表中元素的
  • 在 if 语句中,cin 如何计算为 true?

    我以为 if true execute this statement 那么如何if std cin gt gt X 当没有什么 真实 的时候 执行为 true 吗 我可以理解如果是的话if x lt y or if y operator x
  • 在 ASP.NET Core 中显示 SelectList 中的数据

    我尝试了几种不同的方法 我不知道为什么 但我的 SelectList DropDown 是空的 它显示没有数据 我不确定我哪里出错了 我有一个 ASP NET Core 应用程序 实体框架核心 数据库第一 我正在使用存储库模式 这是我的模型
  • Linq、OrderByDescending、First 和邪恶的 DefaultIfEmpty

    希望这是我不理解基本知识的一个简单问题 下面是我正在开发的应用程序中的两个 Linq 语句 EDMXModel Classes Period p1 entities Periods DefaultIfEmpty null OrderByDe
  • 覆盖 Rails 3 中的默认脚手架生成器

    我已经为 Rails 3 中的控制器创建了一个生成器 现在我想在使用脚手架生成器时使用这个生成器作为默认生成器 那可能吗 您的自定义控制器文件的正确位置是lib templates rails scaffold controller con
  • 如何将 ISO 8601 日期时间字符串转换为 Python 日期时间对象? [复制]

    这个问题在这里已经有答案了 我得到一个格式类似于 2009 05 28T16 15 00 的日期时间字符串 我相信这是 ISO 8601 一种黑客选项似乎是使用解析字符串time strptime并将元组的前六个元素传递到日期时间构造函数中
  • 如何在多个 CruiseControl.NET 版本之间共享标签值?

    我在 CruiseControl NET 中设置了两个项目 CI 构建和夜间构建 它们都执行相同的 NAnt 脚本 但参数不同 CruiseControl NET 标签 当前由默认标签器 作为版本的构建部分嵌入到 AssemblyInfo
  • 元素的流体网格居中,无需在父级上设置硬宽度

    我想将元素的 网格 居中 当调整大小时 该元素会调整到自身居中 像这样
  • AngularJS 修剪模型中的前导零,而视图/输入值仍然保持不变?

    对于类型为数字的输入元素 当输入的数字具有前导零 例如 0000123456 时 模型将更新为 123456 而视图 输入仍保持相同的 0000123456 但是 如果我从数字切换到文本 一切都会按预期进行 我想要一个数字 因为它会显示移动
  • wix - 如何删除非空文件夹

    我已阅读该网站上存在此类问题的所有主题 但找不到我需要的内容 我有一个程序的两个版本 旧版本和新版本 在旧版本中我有文件夹 f1 在新版本中我没有这个文件夹f1 当新程序的安装程序检测到旧版本时 它会删除该旧版本 但不会删除文件夹 f1 如
  • map() 返回 LIST 时出现语法错误

    这有效 print map x gt 1 5 print map x gt 1 5 print map x gt 1 5 但这会引发语法错误 print map x gt 1 5 这是已记录的错误 未记录的错误 还是我不明白为什么它不应该编
  • 检查 Vim 中当前选项卡是否为空

    我正在编写一个 vim 插件 其中我需要检查用户正在查看的当前选项卡是否为空 如果它不为空 比如用户已经在查看缓冲区或有几个窗口 那么我想创建一个新的空选项卡并在那里使用我的插件 但如果它是空的 我想加载我的插件而不打开新选项卡 我在文档中
  • 读取 SQL Server 事务日志

    我们如何读取 SQL Server 事务日志 我知道使用 DBCC 日志 数据库 4 它会生成日志输出 现在我想解码十六进制格式的日志记录 0x00003E001C000000A500000001000200BE04000000000602