FileTable 만들기, 변경 및 삭제Create, Alter, and Drop FileTables

새 FileTable을 만들거나 기존 FileTable을 변경 또는 삭제하는 방법에 대해 설명합니다.Describes how to create a new FileTable, or alter or drop an existing FileTable.

FileTable 만들기 Creating a FileTable

FileTable은 미리 정의된 고정 스키마가 있는 특수한 사용자 테이블입니다.A FileTable is a specialized user table that has a pre-defined and fixed schema. 이 스키마는 FILESTREAM 데이터, 파일/디렉터리 정보 및 파일 특성을 저장합니다.This schema stores FILESTREAM data, file and directory information, and file attributes. FileTable 스키마에 대한 자세한 내용은 FileTable Schema를 참조하세요.For information about the FileTable schema, see FileTable Schema.

Transact-SQL 또는 SQL Server Management StudioSQL Server Management Studio를 사용하여 새 FileTable을 만들 수 있습니다.You can create a new FileTable by using Transact-SQL or SQL Server Management StudioSQL Server Management Studio. FileTable에는 고정 스키마가 있으므로 열 목록을 지정할 필요가 없습니다.Since a FileTable has a fixed schema, you do not have to specify a list of columns. FileTable을 만드는 간단한 구문에서 다음을 지정할 수 있습니다.The simple syntax for creating a FileTable lets you specify:

  • 디렉터리 이름.A directory name. FileTable 폴더 계층 구조에서 이 테이블 수준 디렉터리는 데이터베이스 수준에서 지정된 데이터베이스 디렉터리의 자식이 되고 테이블에 저장된 파일 또는 디렉터리의 부모가 됩니다.In the FileTable folder hierarchy, this table-level directory becomes the child of the database directory specified at the database level, and the parent of the files or directories stored in the table.

  • FileTable의 Name 열에 있는 파일 이름에 사용할 데이터 정렬의 이름The name of the collation to be used for file names in the Name column of the FileTable.

  • 자동으로 만들어지는 UNIQUE 제약 조건 및 세 가지 기본 키에 사용할 이름The names to be used for the 3 primary key and unique constraints that are automatically created.

방법: FileTable 만들기 How To: Create a FileTable

Transact-SQL을 사용하여 FileTable 만들기Create a FileTable by Using Transact-SQL
AS FileTable 옵션이 포함된 CREATE TABLE(Transact-SQL) 문을 호출하여 FileTable을 만듭니다.Create a FileTable by calling the CREATE TABLE (Transact-SQL) statement with the AS FileTable option. FileTable에는 고정 스키마가 있으므로 열 목록을 지정할 필요가 없습니다.Since a FileTable has a fixed schema, you do not have to specify a list of columns. 새 FileTable에 대해 다음 설정을 지정할 수 있습니다.You can specify the following settings for the new FileTable:

  1. FILETABLE_DIRECTORY.FILETABLE_DIRECTORY. FileTable에 저장된 모든 파일 및 디렉터리에 대한 루트 디렉터리 역할을 하는 디렉터리를 지정합니다.Specifies the directory that serves as the root directory for all the files and directories stored in the FileTable. 이 이름은 데이터베이스의 모든 FileTable 디렉터리 이름 중에서 고유해야 합니다.This name should be unique among all the FileTable directory names in the database. 고유성 비교는 현재 데이터 정렬 설정과 관계없이 대/소문자를 구분하지 않습니다.Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • 이 값의 데이터 형식은 nvarchar(255) 이며 Latin1_General_CI_AS_KS_WS의 고정된 데이터 정렬을 사용합니다.This value has a data type of nvarchar(255) and uses a fixed collation of Latin1_General_CI_AS_KS_WS.

    • 제공하는 디렉터리 이름은 올바른 디렉터리 이름에 대한 파일 시스템 요구 사항을 따라야 합니다.The directory name that you provide must comply with the requirements of the file system for a valid directory name.

    • 이 이름은 데이터베이스의 모든 FileTable 디렉터리 이름 중에서 고유해야 합니다.This name should be unique among all the FileTable directory names in the database. 고유성 비교는 현재 데이터 정렬 설정과 관계없이 대/소문자를 구분하지 않습니다.Comparison for uniqueness is case-insensitive, regardless of the current collation settings.

    • FileTable 만들 때 디렉터리 이름을 제공하지 않은 경우 FileTable의 이름이 디렉터리 이름으로 사용됩니다.If you do not provide a directory name when you create the FileTable, then the name of the FileTable itself is used as the directory name.

  2. FILETABLE_COLLATE_FILENAME.FILETABLE_COLLATE_FILENAME. FileTable의 Name 열에 적용할 데이터 정렬의 이름을 지정합니다.Specifies the name of the collation to be applied to the Name column in the FileTable.

    1. 지정한 데이터 정렬은 Windows 파일 이름 의미 체계를 따르도록 대/소문자를 구분하지 않아야 합니다.The specified collation must be case-insensitive to comply with Windows file naming semantics.

    2. FILETABLE_COLLATE_FILENAME값을 제공하지 않거나 database_default를 지정한 경우 열은 현재 데이터베이스의 데이터 정렬을 상속합니다.If you do not provide a value for FILETABLE_COLLATE_FILENAME, or you specify database_default, the column inherits the collation of the current database. 현재 데이터베이스 데이터 정렬이 대/소문자를 구분하면 오류가 발생하고 CREATE TABLE 작업이 실패합니다.If the current database collation is case-sensitive, an error is raised and the CREATE TABLE operation fails.

  3. 자동으로 만들어지는 UNIQUE 제약 조건 및 세 가지 기본 키에 사용할 이름도 지정할 수 있습니다.You can also specify the names to be used for the 3 primary key and unique constraints that are automatically created. 이름을 입력하지 않으면 시스템이 이 항목의 뒷부분에 나와 있는 이름을 생성합니다.If you do not provide names, then the system generates names as described later in this topic.

    • FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_PRIMARY_KEY_CONSTRAINT_NAME

    • FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME

    • FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME

    Examples

    다음 예제에서는 새 FileTable을 만들고 FILETABLE_DIRECTORYFILETABLE_COLLATE_FILENAME둘 다에 대해 사용자 정의 값을 지정합니다.The following example creates a new FileTable and specifies user-defined values for both FILETABLE_DIRECTORY and FILETABLE_COLLATE_FILENAME.

CREATE TABLE DocumentStore AS FileTable  
    WITH (   
          FileTable_Directory = 'DocumentTable',  
          FileTable_Collate_Filename = database_default  
         );  
GO  

또한 다음 예에서는 새로운 Filetable을 만듭니다.The following example also creates a new FileTable. 사용자 정의 값이 지원되지 않기 때문에 FILETABLE_DIRECTORY 값은 FileTable 값이 되고, FILETABLE_COLLATE_FILENAME 값은 database_default가 되며, 기본 키 및 UNIQUE 제약 조건에는 시스템에서 생성한 이름이 지정됩니다.Since user-defined values are not specified, the value of FILETABLE_DIRECTORY becomes the name of the FileTable, the value of FILETABLE_COLLATE_FILENAME becomes database_default, and the primary key and unique contraints receive system-generated names.

CREATE TABLE DocumentStore AS FileTable;  
GO  

SQL Server Management Studio를 사용하여 FileTable 만들기Create a FileTable by Using SQL Server Management Studio
개체 탐색기에서 선택한 데이터베이스의 개체를 확장하고 테이블 폴더에서 마우스 오른쪽 단추를 클릭한 다음 새 FileTable을 선택합니다.In Object Explorer, expand the objects under the selected database, then right-click on the Tables folder, and then select New FileTable.

이 옵션은 Transact-SQL 스크립트 템플릿이 포함된 새 스크립트 창을 엽니다. 이 템플릿을 사용자 지정하여 FileTable을 만드는 데 사용할 수 있습니다.This option opens a new script window which contains a Transact-SQL script template that you can customize and run to create a FileTable. 쿼리 메뉴에서 템플릿 매개 변수 값 지정 옵션을 사용하여 스크립트를 쉽게 사용자 지정할 수 있습니다.Use the Specify Values for Template Parameters option on the Query menu to customize the script easily.

FileTable 만들기에 대한 요구 사항 및 제한 사항 Requirements and Restrictions for Creating a FileTable

  • 기존 테이블을 변경하여 FileTable로 변환할 수 없습니다.You cannot alter an existing table to convert it into a FileTable.

  • 데이터베이스 수준에서 이전에 지정된 디렉터리에 null이 아닌 값이 있어야 합니다.The parent directory previously specified at the database level must have a non-null value. 데이터베이스 수준 디렉터리를 지정하는 방법에 대한 자세한 내용은 FileTable의 필수 구성 요소를 사용하도록 설정을 참조하세요.For information about specifying the database-level directory, see Enable the Prerequisites for FileTable.

  • FileTable에는 FILESTREAM 열이 포함되어 있으므로 FileTable에는 유효한 FILESTREAM 파일 그룹이 있어야 합니다.A FileTable requires a valid FILESTREAM filegroup, since a FileTable contains a FILESTREAM column. 필요에 따라 CREATE TABLE 명령의 일부로 유효한 FILESTREAM 파일 그룹을 지정하여 FileTable을 만들 수 있습니다.You can optionally specify a valid FILESTREAM filegroup as part of the CREATE TABLE command for creating a FileTable. 파일 그룹을 지정하지 않으면 FileTable에는 데이터베이스의 기본 FILESTREAM 파일 그룹이 사용됩니다.If you do not specify a filegroup, then the FileTable uses the default FILESTREAM filegroup for the database. 데이터베이스에 FILESTREAM 파일 그룹이 없으면 오류가 발생합니다.If the database does not have a FILESTREAM filegroup, then an error is raised.

  • TABLE…AS FILETABLE CREATE 문의 일부로 테이블 제약 조건을 만들 수 없습니다.You cannot create a table constraint as part of a CREATE TABLE…AS FILETABLE statement. 그러나 ALTER TABLE 문을 사용하여 나중에 제약 조건을 추가할 수 있습니다.However you can add the constraint later by using an ALTER TABLE statement.

  • tempdb 데이터베이스나 다른 시스템 데이터베이스에는 FileTable을 만들 수 없습니다.You cannot create a FileTable in the tempdb database or in any of the other system databases.

  • FileTable을 임시 테이블로 만들 수 없습니다.You cannot create a FileTable as a temporary table.

FileTable 변경 Altering a FileTable

FileTable에는 미리 정의된 고정 스키마가 있으므로 해당 열을 추가하거나 변경할 수 없습니다.Since a FileTable has a pre-defined and fixed schema, you cannot add or change its columns. 그러나 FileTable에 사용자 지정 인덱스, 트리거, 제약 조건 및 다른 옵션을 추가할 수 있습니다.However, you can add custom indexes, triggers, constraints, and other options to a FileTable.

시스템 정의 제약 조건을 포함하여 ALTER TABLE 문을 사용하여 FileTable 네임스페이스를 사용하거나 사용하지 않도록 설정하는 방법은 FileTable 관리를 참조하세요.For information about using the ALTER TABLE statement to enable or disable the FileTable namespace, including the system-defined constraints, see Manage FileTables.

방법: FileTable의 디렉터리 변경 How To: Change the Directory for a FileTable

Transact-SQL을 사용하여 FileTable의 디렉터리 변경Change the Directory for a FileTable by Using Transact-SQL
ALTER TABLE 문을 호출하고 FILETABLE_DIRECTORY SET 옵션에 유효한 새 값을 제공합니다.Call the ALTER TABLE statement and provide a valid new value for the FILETABLE_DIRECTORY SET option.

예제Example

ALTER TABLE filetable_name  
    SET ( FILETABLE_DIRECTORY = N'directory_name' );  
GO  

SQL Server Management Studio를 사용하여 FileTable의 디렉터리 변경Change the Directory for a FileTable by Using SQL Server Management Studio
개체 탐색기에서 FileTable을 마우스 오른쪽 단추로 클릭하고 속성 을 선택하여 테이블 속성 대화 상자를 엽니다.In Object Explorer, right-click on the FileTable and select Properties to open the Table Properties dialog box. FileTable 페이지에서 FileTable 디렉터리 이름의 새 값을 입력합니다.On the FileTable page, enter a new value for FileTable directory name.

FileTable 변경에 대한 요구 사항 및 제한 사항 Requirements and Restrictions for Altering a FileTable

  • FILETABLE_COLLATE_FILENAME값은 변경할 수 없습니다.You cannot alter the value of FILETABLE_COLLATE_FILENAME.

  • FileTable의 시스템 정의 열은 변경, 삭제하거나 사용하지 않도록 설정할 수 없습니다.You cannot change, drop, or disable the system-defined columns of a FileTable.

  • FileTable에 새 사용자 열, 계산 열 또는 지속형 계산 열을 추가할 수 없습니다.You cannot add new user columns, computed columns, or persisted computed columns to a FileTable.

FileTable 삭제 Dropping a FileTable

DROP TABLE(Transact-SQL) 문의 일반 구문을 사용하여 FileTable을 삭제할 수 있습니다.You can drop a FileTable by using the ordinary syntax for the DROP TABLE (Transact-SQL) statement.

Filetable를 삭제하면 다음 개체도 삭제됩니다.When you drop a FileTable, the following objects are also dropped:

  • FileTable의 모든 열과 테이블에 연결된 모든 개체(예: 인덱스, 제약 조건 및 트리거)도 삭제됩니다.All the columns of the FileTable and all the objects associated with the table, such as indexes, constraints, and triggers, are also dropped.

  • 포함된 FileTable 디렉터리 및 하위 디렉터리가 데이터베이스의 FILESTREAM 파일 및 디렉터리 계층 구조에서 사라집니다.The FileTable directory and the sub-directories that it contained disappear from the FILESTREAM file and directory hierarchy of the database.

    FileTable의 파일 네임스페이스에 열려 있는 파일 핸들이 있는 경우 DROP TABLE 명령이 실패합니다.The DROP TABLE command fails if there are open file handles in the FileTable’s file namespace. 열려 있는 핸들을 닫는 방법에 대한 자세한 내용은 FileTable 관리를 참조하세요.For information about closing open handles, see Manage FileTables.

FileTable을 만들 때 생성되는 다른 데이터베이스 개체 Other Database Objects Are Created When You Create a FileTable

새 FileTable을 만들면 일부 시스템 정의 인덱스 및 제약 조건도 만들어집니다.When you create a new FileTable, some system-defined indexes and constraints are also created. 이러한 개체는 변경하거나 삭제할 수 없으며, FileTable 자체가 삭제된 경우에만 사라집니다.You cannot alter or drop these objects; they disappear only when the FileTable itself is dropped. 이러한 개체의 목록을 보려면 카탈로그 뷰 sys.filetable_system_defined_objects(Transact-SQL)를 쿼리합니다.To see the list of these objects, query the catalog view sys.filetable_system_defined_objects (Transact-SQL).

--View all objects for all filetables, unsorted  
SELECT * FROM sys.filetable_system_defined_objects;  
GO  

--View sorted list with friendly names  
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'  
    FROM sys.filetable_system_defined_objects  
    ORDER BY FileTable, 'System-defined Object';  
GO  

새 FileTable을 만들 때 생성되는 인덱스Indexes that are created when you create a new FileTable
새 FileTable을 만들면 다음과 같은 시스템 정의 인덱스도 만들어집니다.When you create a new FileTable, the following system-defined indexes are also created:

Columns 인덱스 유형Index type
[path_locator] ASC[path_locator] ASC 기본 키, 비클러스터형Primary Key, non-clustered
[parent_path_locator] ASC,[parent_path_locator] ASC,

[name] ASC[name] ASC
고유, 비클러스터형Unique, non-clustered
[stream_id] ASC[stream_id] ASC 고유, 비클러스터형Unique, non-clustered

새 FileTable을 만들 때 생성되는 제약 조건Constraints that are created when you create a new FileTable
새 FileTable을 만들면 다음과 같은 시스템 정의 제약 조건도 만들어집니다.When you create a new FileTable, the following system-defined constraints are also created:

제약 조건Constraints 적용Enforces
다음 열에 대한 기본 제약 조건:Default constraints on the following columns:

creation_timecreation_time

is_archiveis_archive

is_directoryis_directory

is_hiddenis_hidden

is_offlineis_offline

is_readonlyis_readonly

is_systemis_system

is_temporaryis_temporary

last_access_timelast_access_time

last_write_timelast_write_time

path_locatorpath_locator

stream_idstream_id
시스템 정의 기본 제약 조건이 지정된 열에 기본값을 적용합니다.The system-defined default constraints enforce default values for the specified columns.
CHECK 제약 조건Check constraints 시스템 정의 CHECK 제약 조건이 다음 요구 사항을 적용합니다.The system-defined check constraints enforce the following requirements:

유효한 파일 이름Valid filenames.

유효한 파일 특성Valid file attributes.

부모 개체는 디렉터리여야 합니다.Parent object must be a directory.

파일 조작 중에는 네임스페이스 계층 구조가 잠깁니다.Namespace hierarchy is locked during file manipulation.

시스템 정의 제약 조건에 대한 명명 규칙Naming convention for the system-defined constraints
위에서 설명한 시스템 정의 제약 조건은 <constraintType><tablename>[\<columnname>]_<uniquifier> 형식입니다. 여기서 각 항목은 다음을 나타냅니다.The system-defined constaints described above are named in the format <constraintType><tablename>[\<columnname>]_<uniquifier> where:

  • 은 CK(확인 제약 조건), DF(기본 제약 조건), FK(외래 키), PK(기본 키) 또는 UQ(고유 제약 조건)입니다. is CK (check constraint), DF (default constraint), FK (foreign key), PK (primary key), or UQ (unique constraint).

  • <uniquifier>는 이름을 고유하게 만드는 시스템 생성 문자열입니다.<uniquifier> is a system-generated string to make the name unique. 이 문자열은 FileTable 이름 및 고유 식별자를 포함할 수 있습니다.This string may contain the FileTable name and a unique identifier.

참고 항목See Also

FileTable 관리Manage FileTables