Nie mogę odtworzyć tego scenariusza. Próbowałem następujących rzeczy:
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;
Wyniki:
--------
39578
Jeśli jest to ograniczone do 8K, przypuszczam, że jedno z poniższych jest prawdziwe:
-
W rzeczywistości kolumna to
VARBINARY(8000)
. -
Wybierasz dane w Management Studio i analizujesz długość danych, które są tam wyświetlane. Jest to ograniczone do maksymalnie 8192 znaków w wynikach do tekstu, jeśli tak jest, więc użyj
DATALENGTH()
bezpośrednio przy kolumnie jest znacznie lepszym podejściem.