2009-08-17 14 views
11

Jaki jest najskuteczniejszy sposób odczytywania tylko części danych binarnych z pola varbinary (MAX) (nie używając FileStreams) w SQL Server 2008?SQL Server Varbinary (max): wybierz podzbiór bajtów z pola varbinary

Podczas zapisywania danych do kolumny funkcja VarBinary.Write() jest dostępna w T-SQL, co pozwala bajtom zapisywać do pola przyrostowo, ale wydaje się, że nie istnieje podobna funkcja dostępna do odczytu danych.

Wiem o metodach DataReader.GetBytes() w .Net, które wybiorą tylko bajty, o które pytasz, ale czy wiąże się to z obciążeniem wydajności? tj. czy select w sqlserver odczyta wszystkie bajty w bazie danych, a następnie przekaże metodę getBytes() wszystkim tym bajtom, aby odebrał od nich żądany bajt?

Dzięki za pomoc.

Odpowiedz

17

Używasz SUBSTRING. Odczytuje to fragment danych varbinary na serwerze i zwraca tylko fragment kodu do klienta.

+4

+1 interesujące! Nie miałem pojęcia, że ​​mogę użyć SUBSTRINGA w kolumnie VARBINARY! :-) –

+1

Bardzo przydatne, dzięki. – gmn

+0

Cudownie. Kto by pomyślał? Siła niskiego podciągu –

1

Korzystanie z DataReader.GetBytes() jest możliwe bez kosztów ogólnych, afaik. Ale musisz zadzwonić pod numer ExecuteReader() za pomocą opcji CommandBehavior.SequentialAccess.

Powiązane problemy