2014-01-08 1 views
0

ADODB를 사용하여 SQL Server의 이미지 열에 문서를 저장하는 기존 Classic ASP 응용 프로그램이 있습니다. 우리가 실행하고있는 문제는 대부분의 파일에서 1 바이트가 손실된다는 것입니다. 우리는 하나의 파일이 바이트를 잃지 않기 때문에 잠재적으로 크기와 관련이 있다고 생각합니다.SQL Server 이미지 열에 데이터를 저장할 때 한 바이트가 손실 됨

는 지금까지 우리는

  • 정확한 바이트 길이가 ADODB CreateParameter 호출에 전달되고 있음을 검증 ..을.
  • SQL Server BCP 도구를 사용하여 추출이 아닌 SQL Server에서 파일이 손상되었는지 확인합니다. BCP로 파일을 추출 할 때 바이트가 누락되어 있고 -w 매개 변수를 사용했습니다.

다음에 시도 할 수있는 것에 대해 조언이있는 사람이 있습니까?

업데이트 :

우리는 좀 더 연구를하고 그 바이트가 ADODB에서 사라지고 나타납니다. 우리는 이렇게 ..

cmd.Parameters.Append cmd.CreateParameter ("SupportDocImage", adLongVarBinary에, adParamInput, lSize, sFilePath)

lSize는 123,139 것와 sFilePath가 바이너리 데이터 인 경우 (예. 잘못된 명명)

실제로 이것은 저장 프로 시저를 호출하고 저장 프로 시저에서 DATALENGTH (@Variable)를 수행하고 대신 123,138을 얻습니다.

또한 우리가 본 바로는 잃어버린 마지막 바이트입니다.

+0

특정 바이트? 항상 마지막이야? – UnhandledExcepSean

+0

항상 마지막 바이트 인 것으로 보이지만 pdf로 확인하겠습니다. –

+0

SQL 문은 어떻게 생겼습니까? 삽입 직후에 데이터 길이 ('select data_length (col)')를 선택하여 나중에 데이터를 수정하는 것이 없도록하십시오. – usr

답변

0

이 기사를 확인하십시오.

솔루션은 Oracle 용이지만 ADO는 모두 동일합니다. 크기에 +1을 추가

http://forums.devshed.com/visual-basic-programming-52/inserting-blob-s-via-adodb-stream-using-a-stored-procedure-103030.html

보십시오.

또한 이미지를 업로드 할 때이 속성을 선택 했습니까?

진정한

cmdSQL.Properties ("SPPrmsLOB") = 관계없이, 당신은 여전히 ​​varbinary (max) 또는 image 데이터 형식을 취하고 테이블에 삽입 저장 프로 시저를 작성해야합니다.

+0

우리는 크기에 +1을 시도했지만 여전히 깨졌습니다.SPPrmsLOB는 해당 링크 + Google –

+0

을 기반으로 한 Oracle 공급자 별 설정입니다. 시도해 볼 수 있도록 전체 vb 스크립트를 게시하십시오. –