SQL Server 2016 最大字节数/行

Nan*_*ncy 5 sql-server sql-server-2016

我们有一个包含超过 300 列的表的第三方数据库,在 SQL Server 2012 中,我们收到一个错误,提示我们超出了允许的最大 8060 字节。我想知道升级到 SQL Server 2016 是否会有所帮助。

SQL Server 2016 是否也有 8060 字节的限制?是否可以在 SQL Server 2016 中拥有更多列而不会遇到以下错误?

错误:已创建表“X”,但其最大行大小超过了允许的最大值 8060 字节。如果结果行超过大小限制,则对该表的 INSERT 或 UPDATE 将失败。

Aar*_*and 12

此限制依赖于 SQL Server 中的核心物理页面结构,不,这在 SQL Server 2016 中没有改变(在 SQL Server 2017 中也不会改变)。

不过,有办法解决这个问题。最重要的是将一些较大的数据拆分到一个单独的表中。或者,如果您知道您的数据永远不会填充同一行上的所有列(或者您可以阻止它),则只是忍受警告消息。

或者回到第 3 方,看看他们为什么会有这个以及他们如何防止实际的行问题。


Ram*_*chi 5

这就是 SQL Server 的工作方式,并且存在一些限制以使其性能更好,因为所有版本的 sql server 的页面限制为 8KB。

从 msdn 粘贴一些有用的东西:

https://msdn.microsoft.com/en-us/library/ms186981(v=sql.105).aspx

行溢出数据超过 8 KB

一个表每行最多可以包含 8,060 个字节。在 SQL Server 2008 中,对包含 varchar、nvarchar、varbinary、sql_variant 或 CLR 用户定义类型列的表放宽了此限制。这些列中每一列的长度仍必须在 8,000 字节的限制内;但是,它们的组合宽度可以超过 8,060 字节的限制。这适用于创建和修改 varchar、nvarchar、varbinary、sql_variant 或 CLR 用户定义类型的列,也适用于更新或插入数据时。