다음을 통해 공유


FileTable의 필수 구성 요소 사용

적용 대상: SQL Server

FileTable을 만들고 사용하기 위한 필수 구성 요소를 사용하도록 설정하는 방법을 설명합니다.

FileTable의 필수 구성 요소 사용

FileTable을 만들고 사용하기 위한 필수 구성 요소를 사용하도록 설정하려면 다음 항목을 설정합니다.

인스턴스 수준에서 FILESTREAM 사용

FileTable은 SQL Server의 FILESTREAM 기능을 확장합니다. FileTable을 만들고 사용하려면 Windows 수준 및 SQL Server 인스턴스에서 파일 I/O 액세스에 FILESTREAM을 사용하도록 설정해야 합니다.

인스턴스 수준에서 FILESTREAM 사용

FILESTREAM을 사용하도록 설정하는 방법에 대한 자세한 내용은 FILESTREAM 사용 및 구성을 참조하세요.

sp_configure를 호출하여 인스턴스 수준에서 FILESTREAM을 사용하도록 설정하려면 filestream_access_level 옵션을 2로 설정해야 합니다. 자세한 내용은 FILESTREAM 액세스 수준 서버 구성 옵션을 참조하세요.

방화벽을 통해 FILESTREAM 허용

방화벽을 통해 FILESTREAM을 허용하는 방법에 대한 자세한 내용은 FILESTREAM 액세스에 대한 방화벽 구성을 참조하세요.

데이터베이스 수준에서 FILESTREAM 파일 그룹 제공

데이터베이스에서 FileTables를 만들려면 데이터베이스에 FILESTREAM 파일 그룹이 있어야 합니다. 이 필수 구성 요소에 대한 자세한 내용은 FILESTREAM 사용 데이터베이스 만들기를 참조하세요.

데이터베이스 수준에서 비트랜잭션 액세스를 사용하도록 설정

FileTable을 사용하면 Windows 애플리케이션이 트랜잭션 없이 FILESTREAM 데이터에 대한 Windows 파일 핸들을 가져올 수 있습니다. SQL Server에 저장된 파일에 대해 이 비트랜잭션 액세스를 허용하려면 FileTable을 포함할 각 데이터베이스의 데이터베이스 수준에서 원하는 비트랜잭션 액세스 수준을 지정해야 합니다.

데이터베이스에서 비트랜잭션 액세스를 사용할 수 있는지 확인

카탈로그 뷰 sys.database_filestream_options(Transact-SQL)를 쿼리하고 non_transacted_accessnon_transacted_access_desc 열을 확인합니다.

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options;
GO

데이터베이스 수준에서 비트랜잭션 액세스를 사용하도록 설정

비트랜젝션 액세스의 사용 가능한 수준은 FULL, READ_ONLY 및 OFF입니다.

Transact-SQL을 사용하여 비트랜잭션 액세스 수준 지정

새 데이터베이스를 만들 때 NON_TRANSACTED_ACCESS FILESTREAM 옵션을 사용하여 CREATE DATABASE(SQL Server Transact-SQL) 문을 호출합니다.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

기존 데이터베이스를 변경할 경우 NON_TRANSACTED_ACCESS FILESTREAM 옵션을 사용하여 ALTER DATABASE (Transact-SQL) 문을 호출합니다.

ALTER DATABASE database_name
  SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

SQL Server Management Studio를 사용하여 비트랜잭션 액세스 수준 지정

데이터베이스 속성 대화 상자의 옵션 페이지에 있는 FILESTREAM 비트랜잭션 액세스 필드에서 비트랜잭션 액세스 수준을 지정할 수 있습니다. 이 대화 상자에 대한 자세한 내용은 데이터베이스 속성(옵션 페이지)을 참조하세요.

데이터베이스 수준에서 FileTable의 디렉터리 지정

데이터베이스 수준에서 파일에 대한 비트랜잭션 액세스를 사용하도록 설정하는 경우 필요에 따라 DIRECTORY_NAME 옵션과 함께 디렉터리 이름을 제공할 수 있습니다. 비트랜잭션 액세스를 사용하도록 설정할 때 디렉터리 이름을 제공하지 않는 경우 데이터베이스에서 FileTable을 만들려면 나중에 제공해야 합니다.

FileTable 폴더 계층 구조에서 이 데이터베이스 수준 디렉터리는 인스턴스 수준에서 FILESTREAM에 대해 지정된 공유 이름의 자식이 되고 데이터베이스에 만들어진 FileTable의 부모가 됩니다. 자세한 내용은 FileTable에서 디렉터리 및 경로 작업을 참조하십시오.

데이터베이스 수준에서 FileTable의 디렉터리 지정

지정한 이름은 데이터베이스 수준 디렉터리에 대한 인스턴스 전체에서 고유해야 합니다.

Transact-SQL을 사용하여 FileTable에 대한 디렉터리 지정

새 데이터베이스를 만들 때 DIRECTORY_NAME FILESTREAM 옵션을 사용하여 CREATE DATABASE(SQL Server Transact-SQL) 문을 호출합니다.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

기존 데이터베이스를 변경할 경우 DIRECTORY_NAME FILESTREAM 옵션을 사용하여 ALTER DATABASE (Transact-SQL) 문을 호출합니다. 이러한 옵션을 사용하여 디렉터리 이름을 변경하는 경우 열려 있는 파일 핸들 없이 데이터베이스를 단독으로 잠가야 합니다.

ALTER DATABASE database_name
    SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

데이터베이스를 연결할 경우FOR ATTACH 옵션 및 DIRECTORY_NAME FILESTREAM 옵션을 사용하여 CREATE DATABASE (SQL Server Transact-SQL) 문을 호출합니다.

CREATE DATABASE database_name
    FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

데이터베이스를 복원할 때 DIRECTORY_NAME FILESTREAM 옵션을 사용하여 RESTORE(Transact-SQL) 문을 호출합니다.

RESTORE DATABASE database_name
    WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

SQL Server Management Studio를 사용하여 FileTable에 대한 디렉터리 지정

데이터베이스 속성 대화 상자의 옵션 페이지의 FILESTREAM 디렉터리 이름 필드에서 디렉터리 이름을 지정할 수 있습니다. 이 대화 상자에 대한 자세한 내용은 데이터베이스 속성(옵션 페이지)을 참조하세요.

인스턴스의 기존 디렉터리 이름 보기

인스턴스의 기존 디렉터리 이름 목록을 보려면 카탈로그 뷰 sys.database_filestream_options(Transact-SQL)를 쿼리하고 filestream_database_directory_name 열을 확인합니다.

SELECT DB_NAME ( database_id ), directory_name
    FROM sys.database_filestream_options;
GO

데이터베이스 수준 디렉터리에 대한 요구 사항 및 제한 사항

  • CREATE DATABASE 또는 ALTER DATABASE을 호출할 때는 DIRECTORY_NAME 설정은 선택 사항입니다. DIRECTORY_NAME의 값을 지정하지 않으면 디렉터리 이름은 null로 유지됩니다. 그러나 데이터베이스 수준에서 DIRECTORY_NAME의 값을 지정할 때까지는 데이터베이스에 FileTable을 만들 수 없습니다.

  • 제공하는 디렉터리 이름은 유효한 디렉터리 이름에 대한 파일 시스템의 요구 사항을 준수해야 합니다.

  • 데이터베이스에 FileTable이 포함되어 있으면 DIRECTORY_NAME을 다시 null 값으로 설정할 수 없습니다.

  • 데이터베이스를 연결하거나 복원할 때 대상 인스턴스에 이미 있는 DIRECTORY_NAME 값이 새 데이터베이스에 있으면 작업이 실패합니다. CREATE DATABASE FOR ATTACH 또는 RESTORE DATABASE을 호출할 때 DIRECTORY_NAME에 대한 고유 값을 지정합니다.

  • 기존 데이터베이스를 업그레이드할 때 DIRECTORY_NAME의 값은 null입니다.

  • 데이터베이스 수준에서 비트랜잭션 액세스를 사용하거나 사용하지 않도록 설정하면 작업이 디렉터리 이름이 지정되었는지 또는 고유한지 여부를 확인하지 않습니다.

  • FileTables에 사용하도록 설정된 데이터베이스를 삭제하면 데이터베이스 수준 디렉터리와 그 아래에 있는 모든 FileTable의 모든 디렉터리 구조가 제거됩니다.