2009-08-17 58 views
11

Cách hiệu quả nhất để đọc chỉ là một phần của dữ liệu nhị phân từ trường varbinary (MAX) (không sử dụng FileStreams) trong SQL Server 2008?SQL Server Varbinary (max): chọn một tập con của byte từ trường varbinary

Khi ghi dữ liệu vào cột, hàm VarBinary.Write() có sẵn trong T-SQL, cho phép byte được ghi vào trường theo từng bước, nhưng dường như không có chức năng tương tự để đọc dữ liệu.

Tôi biết về phương thức DataReader.GetBytes() trong .Net sẽ chỉ chọn các byte bạn yêu cầu, nhưng điều này có mang chi phí hiệu năng với nó không? tức là lựa chọn trong sqlserver đọc tất cả các byte trong cơ sở dữ liệu, và sau đó đưa phương thức getBytes() tất cả các byte này cho nó để lấy tập con của các byte được yêu cầu từ chúng?

Cảm ơn bạn đã được trợ giúp.

Trả lời

17

Bạn sử dụng SUBSTRING. Điều này đọc một đoạn trích từ dữ liệu varbinary của bạn trên máy chủ, và chỉ trả về đoạn mã cho khách hàng.

+4

+1 thú vị! Tôi không có ý tưởng tôi có thể sử dụng SUBSTRING trên một cột VARBINARY! :-) –

+1

Rất hữu ích, cảm ơn. – gmn

+0

Tuyệt vời. Ai đã nghĩ thế? Sức mạnh của chuỗi con thấp –

1

Sử dụng DataReader.GetBytes() là có thể mà không cần phải trả phí. Nhưng bạn sẽ phải gọi số ExecuteReader() với tùy chọn CommandBehavior.SequentialAccess.

Các vấn đề liên quan