2010-05-19 2 views
1

내가 파일 스트림에 대한 조사를하고있는 중이 야가 (백서를 읽고 검색을 구글하면서 유래에 요청) SQL 서버 파일 스트림의 스토리지 NFTS에 저장된 대한 기존 문서에 삽입하는 방법 :이런 식으로 관리하는 현재의 내 screnario 문서에서,

1) 문서 ID와 문서 경로 (예 : \ fileserver \ DocumentRepository \ file000000001.pdf)를 유지하는 DB 테이블이 있습니다.

2) 문서를 저장할 문서 폴더 (\ fileserver \ DocumentRepository)가 있습니다.

물론 이것을 varbinary (최대)/파일 스트림 저장소로 변경해야합니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

"\ fileserver \ DocumentRepository \ file000000001.pdf"가 varbinary (max) 필드에 할당되었거나 명시 적으로 삽입해야한다고 말 할 수 있습니까? 따라서 varbinary (max) 필드에 "이제는 기존 문서에 대한 포인터입니다"라고 알려줍니다.

답변

2

기존 파일을 varbinary (max)/파일 스트림 값에 할당 할 수 없습니다. 명시 적으로 삽입해야합니다.

어떤 이유로 인해 이것이 옵션이 아닌 경우 (예 : 엄청난 양의 데이터를 복사 할 수 없거나 복사하는 동안 디스크 공간 문제가 발생할 수 있음) 마이그레이션과 관련하여 몇 가지 해킹이 있습니다. 0 사본. 트릭은 다음 단계를 수행하는 것입니다 :

  1. DB를 간단한 복구 모델로 전환하십시오.
  2. 이전하려는 모든 파일에 대한 파일 헤더 파일을 삽입하십시오. 삽입 할 때 varbinary 값 0x를 사용하십시오. 삽입하는 동안 (문서 ID/파일 경로) => (파일 스트림 파일 이름) 쌍을 수집하십시오.
  3. SQL Server를 중지하십시오.
  4. 빈 파일 스트림 파일을 실제 문서로 덮어 씁니다 (데이터 복사를 피하기 위해 이동/하드 링크 사용).
  5. SQL Server를 시작하고 몇 가지 온 전성 검사 (DBCC)를 수행하고 새 백업 체인을 시작하십시오.

분명히이 해킹은 권장되지 않으며 데이터베이스가 손상되기 쉽습니다. :)

+0

예. 이제 몇 가지 테스트를 거쳤으므로 사용 가능한 디스크 공간을 확인하고 문서를 "복제"하거나 한 번에 하나씩 삽입 및 삭제하는 것이 더 좋습니다. 당신이 제안하는 해킹은 제 질문에 대한 답입니다. 어쨌든 그것은 제게 적합하지 않은 진짜 해킹이기 때문입니다. 고마워. – LaBracca

관련 문제