Tôi không thể tái tạo kịch bản này. Tôi đã thử những cách sau:
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;
Kết quả:
--------
39578
Nếu điều này được giới hạn ở 8K thì tôi đoán rằng một trong hai điều sau là đúng:
-
Cột thực sự là
VARBINARY(8000)
. -
Bạn đang chọn dữ liệu trong Management Studio và phân tích độ dài của dữ liệu được hiển thị ở đó. Điều này được giới hạn ở tối đa 8192 ký tự trong kết quả đối với văn bản, nếu trường hợp này xảy ra, vì vậy hãy sử dụng
DATALENGTH()
trực tiếp chống lại cột là một cách tiếp cận tốt hơn nhiều.