다음을 통해 공유


FileTable의 필수 구성 요소 활성화

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 파일 그룹 제공

데이터베이스에서 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을 사용하여 비 트랜잭션 액세스 수준 지정

```sql  
CREATE DATABASE database_name  
    WITH 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 ServerTransact-SQL) 문을 호출합니다.
```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  

Database-Level 디렉터리에 대한 요구 사항 및 제한 사항

  • 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 고유한 값을 지정합니다.

  • 기존 데이터베이스를 SQL Server 2014로 업그레이드하면 DIRECTORY_NAME 값이 null입니다.

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

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