AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 326796
Accepted
Fajela Tajkiya
Fajela Tajkiya
Asked: 2023-05-06 01:18:13 +0800 CST2023-05-06 01:18:13 +0800 CST 2023-05-06 01:18:13 +0800 CST

为什么 SQL Server 对 LSN 使用两种不同的数据类型?

  • 772

我在 SQL Server 文档中注意到,日志序列号 (LSN) 有时被描述为数字 (25,0),有时被描述为二进制 (10)。为什么 LSN 使用两种不同的数据类型?我什么时候应该使用每种类型?

https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/recover-to-a-log-sequence-number-sql-server?view=sql-server-ver16

LSN 是数据类型 numeric(25,0) 的值。算术运算(例如,加法或减法)没有意义,不得与 LSN 一起使用。

https://learn.microsoft.com/en-us/sql/relational-databases/system-tables/cdc-lsn-time-mapping-transact-sql?view=sql-server-ver16

start_lsn 二进制文件(10)

sql-server
  • 1 1 个回答
  • 45 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Green
    2023-05-06T20:40:47+08:002023-05-06T20:40:47+08:00

    就像 2000 年 1 月 1 日和 2000-01-01 是同一日期的两种不同表示形式,因此根据使用方式的不同,LSN 的表示形式也不同。

    我有一个名为 Sandbox 的测试数据库。我可以使用 DBCC PAGE查看文件 1(参考)第 9 页上保存的内部元数据。

    dbcc traceon(3604);
    dbcc page('Sandbox', 1, 9, 3);
    

    这说明数据库是在某个LSN备份的。

    dbi_dbbackupLSN = 43:24059:73 (0x0000002b:00005dfb:0049)
    

    LSN 以十六进制和等效的十进制表示形式显示。例如,0x2b(十六进制)= 43(十进制)。因此我们可以推断,在内部,LSN 作为类似整数的值存储在一个由三部分组成的结构中。如果我们计算忽略标点符号的字节数,我们会发现它需要 10 个字节。这很可能是 CDC 实施中出现的格式。

    我们可以获取这些部分中的每一个并将它们的最大十六进制值转换为等效的整数。
    0xffffffff = 4294967295(10 位)
    0xffff = 65535(5 位)

    如果我们将这些结合起来,我们会发现我们需要 10+10+5 = 25 位的总长度来表示相同的十进制值。这是记录功能中更常用的格式。为了确认,我们可以使用msdb查看相同的备份 LSN 。

    
    select database_backup_lsn
    from msdb..backupset
    where database_name = 'Sandbox'
    
    database_backup_lsn
    -------------------
    43000002405900073
    

    您会注意到这个数字与从引导页面中提取的数字相同,其中的部分用零填充并连接起来。

    因此,您应该使用与您正在阅读的来源相对应的数据类型。

    这里有一个方便的花花公子脚本来进行这种翻译。

    • 1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve