2009-07-31 2 views
3

"Image"라는 열 형식으로 SQL Server 2005 데이터베이스 테이블에 문서를 저장합니다.SQL Server 2005 IMAGE 열에 20MB 파일을 저장하는 가장 효율적인 방법

1 메가보다 큰 PDF 파일을 저장할 때마다 어떻게 든 손상됩니다.

.NET에서 대용량 파일 (~ 10megs)을 데이터베이스에 직렬화하고 저장하는 데 특히 효율적인 방법이 있습니까?

[편집] Microsoft는 실제로 최대 파일 크기가 약 2G라고 말합니다. 0에서 2까지의 가변 길이 이진 데이터^31-1 (2,147,483,647) 바이트입니다. http://msdn.microsoft.com/en-us/library/ms187993.aspx

+1

부패에는 데이터베이스에 넣고 가져 오는 방법과 관련이있을 수 있습니까? –

+2

파일을 저장하고 검색하는 데 사용하는 코드를 보여주십시오. 또한 부패가 있다는 것을 어떻게 알 수 있는지 알려주십시오. 테스트 데이터가 아닌 파일을 사용하여 손상을 재현 할 수 있습니까? 20MB의 0을 저장하면 20MB의 0을 검색 할 수 있습니까? –

+0

재미있는 점은 유닛 테스트가 여전히 통과된다는 것입니다. 파일을 직렬화하고, 내용 크기 (바이트 길이)를 저장하고, 파일을 검색하고 바이트를 비교하여 동일합니다. 그러나 검색된 파일을 보려고하면 파일이 손상됩니다. ... 이것은 대용량 파일에서만 발생합니다. –

답변

2

아웃 문서를 리팩토링하지 않으려면 빠른 솔루션 이 시점에서 DB는 데이터에 대한 압축을 사용하는 것입니다 :

http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

내가 SQL 서버가 파일을 손상하지만 f를 당신을 도울 수있는 GZIP 알고리즘에서 작동하고 있는지 의심 버그를 나타냅니다.

+1

일부 파일 형식 (예 : PDF, 이미지)은 많이 압축하지 않습니다. 5 % -10 % – Jim

8

파일 시스템에 파일을 저장하고 파일에 대한 참조를 데이터베이스에 저장하는 것이 더 좋지 않습니까? 20MB 파일을 데이터베이스에 저장하는 것은 성능 문제를 일으킬 수있는 것처럼 들립니다.

+1

http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay/3772 –

+0

이 프로젝트를 상속 받았으며 항상 데이터베이스에 문서를 저장했습니다. –

+0

열을 BLOB로 변환 할 수 있습니까? 내 SQL 서버는 녹슬지 만, 위에서 언급했듯이 varbinary의 제한은 이미지 열이 아닌 Binary Object를 사용하여 극복 될 수 있습니다. – andrewWinn

3

문서 중심 방식을 따르고 pdf 및 이미지와 같은 문서를 데이터베이스에 저장하지 않으므로 데이터베이스의 모든 종류의 성능 문제가 발생하면 결국 리팩토링해야합니다. 파일 시스템에 파일을 저장하고 databse 테이블 안에 경로를 지정하면됩니다.

그러나 이미이 문제를 다루고 있으므로이 기사를 살펴보십시오.

http://chiragrdarji.wordpress.com/2007/08/31/storing-and-retrieving-docpdfxls-files-in-sql-server/

그것은 varbinarary의 최대 한계가 2 31 바이트로 발생한다고 설명하면 SQL 서버에 저장할 수있는 것입니다 2005

+0

거의 2GB입니다.저장하고자하는 파일은 약 10MB입니다. –

2

SQL Server 2005에서 큰 바이너리 데이터로 VARBINARY(Max)을 사용하면 안됩니까?

+0

예, 'IMAGE' 유형은 조만간 지원 중단 될 예정입니다. - SQL Server 2008 R2는 아마 지원하지 않을 것입니다 더 이상. 대신에 VARBINARY (MAX)를 사용하십시오! –

관련 문제