SQL Server - varbinary(max) 如何存储 > 8000 字节?

use*_*321 2 sql-server-2005 sql-server sql-server-2008-r2 varbinary

在 SQL Server 2005 和 2008 R2 中,我调用了一个存储过程,该存储过程的 out 参数定义为varbinary(max). 根据 .out 参数返回 10020 字节DATALENGTH

但是,如果我尝试定义大于 8000 字节的 varbinary,例如 varbinary(10000),则 SQL Server 会出错。例如

The size (10000) given to the type 'varbinary' exceeds the maximum allowed for any data type (8000).
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?SQL Server 如何返回超过数据类型允许的字节数?SQL Server 是否在幕后使用其他一些数据类型来保存 > 8000 字节?

Han*_*non 7

您可以指定的最大大小为 8000。任何更大的都需要指定为(MAX)

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms188362.aspx