No puedo reproducir este escenario. Intenté lo siguiente:
USE tempdb;
GO
CREATE TABLE dbo.blob(col VARBINARY(MAX));
INSERT dbo.blob(col) SELECT NULL;
UPDATE dbo.blob
SET col = (SELECT BulkColumn
FROM OPENROWSET( BULK 'C:\Folder\File.docx', SINGLE_BLOB) alias
);
SELECT DATALENGTH(col) FROM dbo.blob;
Resultados:
--------
39578
Si esto se limita a 8K, supongo que cualquiera de los siguientes es cierto:
-
La columna es en realidad
VARBINARY(8000)
. -
Está seleccionando los datos en Management Studio y analizando la longitud de los datos que se muestran allí. Esto está limitado a un máximo de 8192 caracteres en los resultados de texto, si este es el caso, use
DATALENGTH()
directamente contra la columna es un enfoque mucho mejor.