2008-10-28 2 views
3

사용자가 SQL Server 2005 데이터베이스에 파일을 첨부 할 수있는 .NET 응용 프로그램이 있습니다. 파일 크기를 10MB로 제한하고 싶습니다. 따라서 실제로 말할 수있는 최대 크기는 8000 바이트이므로 데이터 유형 varbinary (max)를 선언해야합니다. 하지만 ~ 2GB 파일 크기의 varbinary (최대)는 과도한 것처럼 보입니다. 데이터베이스에서 10MB로 제한하는 방법이 있습니까, 아니면 프론트 엔드에서 더 큰 것을 첨부하려고하지 않는지 확인해야합니다.SQL Server 2005 DB에 첨부 파일을 값> 8000 바이트로 제한

답변

0

프론트 엔드에서 만들 필요가 있다고 생각합니다. 당신은 그런 식의 Web.config에 HTTP 요청 크기를 제한 할 수 있습니다 : 당신은 또한 사용자가 지정된 임계 값보다 더 많은 파일을 업로드하려고 할 때 명시 적으로 게시 된 파일의 크기를 확인해야 할 수 있습니다

</configuration> 
    </system.web> 
     <httpRuntime maxRequestLength="60000"/> 
    </system.web> 
</configuration> 

.

0

이미 업로드 크기에 제한이 있습니다 (기본값 : 4MB IIRC). 이를 사용하여 다운로드를 제한 할 수 있습니다.

IMO DB에 대한 경로가 더 빠르기 때문에 IMO 서버의 오버로드를 최소화 할 수 있습니다.

유일한 단점은 ASP.NET 제한보다 큰 파일을 업로드하려고하면 오류 페이지가 표시된다는 것입니다.

0

아 - 내 잘못. 이것은 VB.Net 데스크톱 응용 프로그램입니다. 나는 그것을 언급하는 것을 잊었다. 그러나 프론트 엔드에서 처리해야한다는 제안이 아직 남아 있다고 생각합니다.

감사

0

나는 당신의 응용 프로그램에서 파일 제한을 확인하는 것입니다, 당신은 그냥 너무 큰 확인하려면 DB에 삽입하는 과정을 통해 가고 싶지 않아.

손이 거의 잡히지 않아 시간을 절약하고 더 나은 사용자 환경을 제공 할 수 있습니다.

2

varbinary (max)를 사용하는 것은 완전히 괜찮습니다. varbinary이기 때문에 컨텐츠가 필요로하는만큼의 공간 (최대 2 기가) 만 사용하게됩니다. 그러나 db의 CHECK CONSTRAINT를 추가하여 업로드의 datalength()를 확인할 수 있습니다. 하지만 차라리 응용 프로그램에서 업로드를 확인하고 싶습니다.

+0

응용 프로그램과 DB 측 검사를하지 않는 이유를 생각해 낼 수 있습니까? – Solracnapod

+0

응용 프로그램에 가치있는 것을 추가하지 않기 때문에 아마 DB 검사를하지 않을 것입니다. 크기 제한은 응용 프로그램 논리에서 최상으로 유지되는 비즈니스 의사 결정입니다.DB는 10 또는 20 또는 100MB 파일을 완벽하게 처리합니다. –

2

주제 약간 벗어남 : 실제로 가능하지만 실제로 데이터베이스에 첨부 파일을 실제로 저장하는 것은 좋지 않은 아이디어입니다.

주요 문제는 백업 및 기타 일상적인 유지 관리를 훨씬 어렵게 만드는 큰 첨부 파일로 인해 전체 데이터베이스 크기가 폭발적으로 증가한다는 것입니다.

파일의 경로 정보를 데이터베이스에 저장하고 공유 된 네트워크 폴더에 실제 파일을 저장하기 만하면됩니다. (물론 네트워크 파일 사용 권한 및 기타 문제에 대해 걱정할 필요가 있지만 많은 경우에는 여전히 더 나은 대안입니다.)

0

첨부 파일을 제한하는 것이 좋습니다 크기는 프런트 엔드와 데이터베이스에 있습니다. Kaboing의 체크 제약 솔루션은 데이터베이스 측면에 적합합니다.