我删除了最近插入的一行数据。我没有恢复和前滚这个巨大数据库的第二个副本来检索插入的数据,而是尝试使用 fn_dblog()“未记录”系统函数来检索它。使用描述(可在此处找到:https ://sqlfascination.com/2010/02/03/how-do-you-decode-a-simple-entry-in-the-transaction-log-part-1/ )
在 [Log Content 0] 列 fn_dblog() 返回的内容中,我成功地从日志文件中检索了我插入的(以及后来删除的)数据。在为固定宽度列数据保留的二进制数据部分中,我发现 SQL DateTime 列值占用 8 个字节。我正在.NET 程序中处理二进制数据,使用适用于 Int 或 BigInt 值的 BitConverter.ToInt64 或 BitConverter.ToInt32
我已经设法检索了我需要的所有插入的列值,除了日期时间列......
我不清楚如何将 SQL DateTime 列的 8 个字节解释为 C# DateTime 对象。如果有帮助,下面是从特定日期时间的事务日志数据中检索到的日期时间 8 字节的示例十六进制和 Int64 版本。
二进制日期时间(2020 年 7 月 31 日左右):0xF030660009AC0000(字节序反转:0x0000AC09006630F0)
作为 Int64:189154661380804
有什么建议么?这是日期的内部 SQL Server 表示,我不确定在哪里可以找到文档...