SQL Server 如何在内部检测记录?

1 sql-server database-internals

我正在关注作者(堆栈程序员)指出的这篇SO post

SQL Server 使用标识列作为键值来引用特定行。因此只能创建一个标识列。

他还提到

此外,如果没有明确声明标识列,Sql server 内部会存储一个单独的列,其中包含每行的键值。

谁能更详细地解释这两点(特别是第二点)?

谢谢

Rem*_*anu 6

谁能更详细地解释这两点(特别是第二点)?

我希望不会,因为他们都错了。在 SQL Server 中,行由键(在 B 树中)或行 ID(在堆中)标识。非唯一聚集索引有一个内部唯一标识符列。IDENTITY 类型的列经常也用作主键这一事实与问题正交。

不要将您的知识建立在论坛帖子的内容上,包括 StackOverflow,包括这篇帖子。一个很好的来源是官方文档,例如。表和索引数据结构体系结构。阅读一本好书,例如SQL Server Internals系列。