FileTable에 대한 필수 구성 요소 사용

적용 대상:SQL Server

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

FileTable에 대한 필수 구성 요소 사용

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

인스턴스 수준에서 FILESTREAM 사용

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

인스턴스 수준에서 FILESTREAM 사용

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

인스턴스 수준에서 FILESTREAM을 사용하도록 설정하기 위해 호출 sp_configure 하는 경우 옵션을 .로 설정 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_access_desc 열을 검사non_transacted_access.

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

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

비전송 액세스의 사용 가능한 수준은 FULL, READ_ONLY 및 OFF입니다.

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

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

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

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

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에 대한 디렉터리 지정

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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