[SQLServer 대형 객체] - 파일 시스템에서 파일 마이그레이션

5071 단어 sqlserver
읽기 탐색
파일 시스템에서 FileTable로 파일 마이그레이션
FileTable에 파일 대량 로드
FileTable에 파일을 대량 로드하는 방법
 
블로그[SQLServer 대규모] - FileTable 초기 환경를 통해 데이터베이스에 파일을 불러오고 이 파일들을 보고 접근할 수 있습니다.
파일을 FileTable에 불러옵니다. 도구 xcopy 또는 robocopy를 사용하거나, 스크립트 (예: PowerShell) 나 프로그램을 직접 작성하여 FileTable에 파일을 복사할 수 있습니다.
이제 파일 마이그레이션을 살펴보겠습니다.
 
파일 시스템에서 FileTable로 파일 마이그레이션
마이그레이션 파일 조건
파일이 파일 시스템에 저장됨
SQL Server의 메타 데이터 테이블에는 파일에 대한 포인터가 포함되어 있습니다.
실행 전제
파일을 FileTable로 이동하려면 각 파일의 원래 UNC 경로를 FileTable의 UNC 경로로 대체해야 합니다.
현재 FileTable PhotoMetadata에 이미지 데이터가 포함되어 있다고 가정해 보겠습니다.이 테이블에는 실행을 포함하는 varchar (512) 형식의 UNC 경로 열이 있습니다.jpg 파일의 실제 경로입니다.
장.jpg와 해당 디렉토리 구조가 FileT의 루트 디렉토리로 복사됩니다.
실행
코드를 사용하여 PhotoMetadata의 메타데이터를 수정하려면 다음과 같이 하십시오.
   1:  --    PhotoMetadata。
   2:  ALTER TABLE PhotoMetadata ADD pathlocator hierarchyid;
   3:   
   4:  --  。
   5:  DECLARE @UNCPathRoot varchar(100) = '\\RemoteShare\Photographs';
   6:   
   7:  --  FileTable 。
   8:  DECLARE @FileTableRoot varchar(1000);
   9:  SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
  10:   
  11:  --  PhotoMetadata。
  12:   
  13:  --   FileTable   UNC  。
  14:  UPDATE PhotoMetadata
  15:      SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
  16:   
  17:  --   FileTable   pathlocator  。 
  18:  UPDATE PhotoMetadata
  19:      SET pathlocator = GetPathLocator(UNCPath);

<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->
FileTable에 파일 대량 로드
대량 작업의 경우 FileTable는 다른 테이블과 기본적으로 같지만 주의해야 할 부분이 있습니다.
FileTable에는 파일의 무결성 및 디렉토리 공간을 유지 관리하기 위한 시스템 정의 구속이 있습니다.이러한 구속조건은 데이터가 파일 테이블로 대량 로드되는지 확인합니다.일부 대량의 삽입 작업은 표의 제약을 무시할 수 있기 때문에 다음은 강제로 요구된다.
제약조건을 적용한 벌크 로드 작업은 다음과 같이 다른 테이블과 마찬가지로 FileTable에서 사용할 수 있습니다.
bcp(CHECK)CONSTRAINTS 자문
BULK INSERT(CHECK 포함)CONSTRAINTS 자문
INSERT INTO...SELECT* FROM OPENROWSET(BULK...) IGNORE 없음CONSTRAINTS 자문
다음과 같이 필더블 시스템에서 정의한 구속이 해제되지 않은 경우 비강제 구속에 대한 대량 로드 작업이 실패합니다.
bcp CHECK 없음CONSTRAINTS 자문
BULK INSERT에 CHECK 없음CONSTRAINTS 자문
INSERT INTO...SELECT* FROM OPENROWSET(BULK...) IGNORECONSTRAINTS 자문
 
FileTable에 파일을 대량 로드하는 방법
FileTable에 파일을 대량 로드하는 방법은 다음과 같습니다.
    bcp
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문그런 다음 FileTable 네임스페이스를 다시 활성화합니다.
    BULK INSERT
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문FileTable 네임스페이스를 다시 활성화합니다.
    INSERT INTO … SELECT * FROM OPENROWSET(BULK …)
CHECK 사용CONSTRAINTS 자문
FileTable 네임스페이스를 비활성화하고 CHECK 을 사용하지 않습니다.CONSTRAINTS 자문FileTable 네임스페이스를 다시 활성화합니다.

좋은 웹페이지 즐겨찾기