티스토리 뷰

SQL

SQL Server 2012의 FileTable

정홍주 2012. 5. 9. 11:55

SQL Server 2012 FileTable

SQL Server 2012에서는 FileTable 기능을 제공하고 있습니다. 파일 및 문서를 SQL Server FileTable에 저장하지만 Windows 탐색기에서는 기존에 쓰던 그대로 복사, 수정, 삭제가 가능하며 비트랜잭션 액세스가 가능합니다. 많은 기능이 있지만 일단 간략히 어떤 것인지 살펴보도록 하겠습니다. 파일이나 문서 콘텐트를 관리할 경우 더 많은 이점을 제공할 것으로 보입니다.

관련 링크는 아래를 참고하십시오.

http://msdn.microsoft.com/ko-kr/library/ff929144.aspx 

l  FileTable 사용하도록 설정

-       FileTable SQL ServerFILESTREAM 기능을 확장합니다. 그러므로 먼저 FILESTREAM 을 사용하도록 설정되어야 합니다.

-       먼저 FileTable 사용하도록 데이터베이스 수준에서 설정을 해야 합니다. 데이터베이스를 만들면서 해도 되며 기존 데이터베이스에 설정해도 됩니다.

CREATE DATABASE FileContent

  WITH FILESTREAM

  ( NON_TRANSACTED_ACCESS = FULL,

    DIRECTORY_NAME = N’FileTablelAccess'

  );

GO

 

-       데이터베이스에 FILESTREAM 파일 그룹이 있어야 합니다. 그래서 아래 구문을 실행해줍니다.

ALTER  DATABASE FileContent

  ADD FILEGROUP FileContent_FG

  CONTAINS FILESTREAM;

GO

 

ALTER DATABASE FileContent

ADD FILE

(

    NAME= 'FileContent_Demo',

    FILENAME = 'C:\FileContent\FileContent_Demo'

)

TO FILEGROUP FileContent_FG;

GO

  

l  FileTable 만들기

-       FileTable을 생성합니다.

USE FileContent;

GO

 

CREATE TABLE ImageFiles AS FILETABLE

  WITH

  ( FILETABLE_DIRECTORY = 'ImageTable',

    FILETABLE_COLLATE_FILENAME = database_default

  );

GO

-       결과는 아래와 같습니다. 테이블 스키마는 미리 고정된 스키마입니다. 별도로 열을 추가할 수는 없습니다.

 

-       실제 파일 폴더는 공유 UNC 경로로 액세스 할 수 있습니다.

\\컴퓨터이름\MSSQLSERVER\FileTablelAccess\ImageTable

공유 폴더에 파일을 아래와 같이 복사만 했습니다. 

 

l  Select

-       결과를 Select 해보면 위에서 복사한 내용이 그대로 결과에 반영되어 있습니다. 

 

l  FileTable 만들기에 대한 요구 사항 및 제한 사항

-       기존 테이블을 변경하여 FileTable로 변환할 수 없습니다.

-       데이터베이스 수준에서 이전에 지정된 디렉터리에 null이 아닌 값이 있어야 합니다.

-       FileTable에는 FILESTREAM 열이 포함되어 있으므로 FileTable에는 유효한 FILESTREAM 파일 그룹이 있어야 합니다. 데이터베이스에 FILESTREAM 파일 그룹이 없으면 오류가 발생합니다.

-       TABLE…AS FILETABLE CREATE 문의 일부로 테이블 제약 조건을 만들 수 없습니다.그러나 ALTER TABLE 문을 사용하여 나중에 제약 조건을 추가할 수 있습니다.

-       tempdb 데이터베이스나 다른 시스템 데이터베이스에는 FileTable을 만들 수 없습니다.

-       FileTable을 임시 테이블로 만들 수 없습니다.

 

이상으로 간단히 살펴보았으며 위 내용은 가장 기본적이며 추가적으로 대량 로드나 변경, 삭제, 파일 IO API 등의 여러 내용이 있습니다. 그리고 데이터베이스를 백업하면 파일 관련 데이터가 같이 백업됩니다.

 

 

댓글