2009-08-17 4 views
11

SQL Server 2008의 varbinary (MAX) 필드 (FileStreams를 사용하지 않음)에서 이진 데이터의 일부분을 읽는 가장 효율적인 방법은 무엇입니까?SQL Server Varbinary (최대) : varbinary 필드에서 바이트의 하위 집합을 선택하십시오.

VarBinary.Write() 함수는 T-SQL에서 사용할 수 있으므로 바이트를 필드에 점진적으로 쓸 수는 있지만 데이터 읽기에 사용할 수있는 유사한 함수는없는 것으로 보입니다.

요청한 바이트 만 선택하는 .Net의 DataReader.GetBytes() 메서드에 대해 알고 있지만 성능 오버 헤드가 발생합니까? 즉 sqlserver의 select가 데이터베이스의 모든 바이트를 읽은 다음 getBytes() 메소드에 요청 된 바이트의 하위 세트를 가져올 수 있도록이 바이트를 모두 제공합니까?

도움 주셔서 감사합니다.

답변

17

SUBSTRING을 사용합니다. 이렇게하면 서버의 varbinary 데이터에서 스 니펫을 읽고 해당 스 니펫 만 클라이언트에 반환합니다.

+4

재미있는 +1! VARBINARY 컬럼에서 SUBSTRING을 사용할 수 있는지 전혀 몰랐습니다! :-) –

+1

매우 유용합니다. 감사합니다. – gmn

+0

멋진. 누가 그것을 생각 했을까? 낮은 하위 문자열의 힘 –

1

오버 헤드없이 afaik를 사용하면 DataReader.GetBytes()을 사용할 수 있습니다. 하지만 CommandBehavior.SequentialAccess 옵션을 사용하여 ExecuteReader()으로 전화해야합니다.