最多可以在SQL Server表中包含多少行

时间:2011-08-25 05:29:35

标签: sql-server

通常我们可以提供更多的值,最多可以提供一个表在SQL Server中可以拥有多少行?之后我们无法添加新行。

4 个答案:

答案 0 :(得分:8)

根据Microsoft specification

  

每桌行数:受可用存储空间的限制

答案 1 :(得分:7)

有一些边缘情况(在明显的磁盘空间问题之外),SQL Server将阻止您添加更多行,而不是确切地说行数,但值得一提:

  • 您有一个IDENTITY列,并且您点击了数据类型范围的末尾,例如TINYINT为255,INT为2,147,483,647,有些不合时宜的数字以9开头 - 可能是太阳和背后的英寸数 - BIGINT等等。当您尝试插入时在下一行,您将收到有关溢出类型的错误消息815。这与表中已有的行数本身无关,而是与您已尝试插入的行数无关(无需重新设置IDENTITY列)。如果您有很高比例的回滚(或大量成功插入),您可能希望随时间跟踪此列中的最大值。

  • 如果您的堆具有非唯一索引,或者聚簇索引不是唯一的,则您将无法存储超过2 * 2,147,483,647个唯一索引键组合。当您尝试在聚类索引中唯一列的1列中插入值为INT的(2 * 2,147,483,647)+ 1行时,您将收到有关耗尽<的错误消息666 EM> uniqueifier 。这是因为uniqueifier(当没有真正的密钥时帮助SQL Server识别一行)只有4个字节,这意味着它不能超过INT的容量(它确实使用正面和负面,不像IDENTITY,除非配置它,这就是为什么你得到双倍)。现在你为什么会这样做,&lt;耸肩&gt; ......但你可以。

  • 在VLDB空间中,数据库只能是524,272太字节。同样是一个非常优秀的案例,但如果你有一个庞大的数据仓库,那么显然在某些时候行数 - 取决于行的大小 - 将使你接近这个限制。我认为petabyte数据库虽然据称存在于某个实验室的某个角落,但在很大程度上是理论上的。我认为技术上Max Capacity page for SQL Server上的“受可用存储限制”语句可以考虑这个最大大小,或者他们可以假设没有人会有超过524,272太字节的可用存储空间到单个SQL Server实例(今天可能是一个合理的假设,但是640K的RAM也是如此: - ))。

可能还有其他类似的学术案例,但当我看到问题的标题时,我立即想到了这三个案例。它们非常模糊,主要是学术性的,但我仍然认为它们应该被纳入讨论中。

答案 2 :(得分:2)

SQL Server中的行数仅受数据库本身可用的存储空间的限制。除非您达到 限制,否则我怀疑您是否会遇到无法向表中添加行的情况。

究竟是什么问题?那会有所帮助。错误消息?

答案 3 :(得分:0)

我不知道有多少行限制,也不确定是否有这样的数字。但我知道有超过1亿行的表格。

如果您正在寻找一种方法将程序限制为最大记录数,可能应该以编程方式执行此操作。 AFAIK SQL Server不会向您公开此类属性。