FileTable로 파일 로드Load Files into FileTables

파일을 FileTable로 로드 또는 마이그레이션하는 방법에 대해 설명합니다.Describes how to load or migrate files into FileTables.

FileTable로 파일 로드 또는 마이그레이션 Loading or Migrating Files into a FileTable

FileTable로 파일을 로드하거나 마이그레이션하기 위해 선택하는 방법은 파일이 현재 저장된 위치에 따라 달라집니다.The method that you choose for loading or migrating files into a FileTable depends on where the files are currently stored.

파일의 현재 위치Current location of files 마이그레이션 옵션Options for migration
파일이 현재 파일 시스템에 저장되어 있습니다.Files are currently stored in the file system.

SQL ServerSQL Server 에서 파일에 대해 알지 못합니다. has no knowledge of the files.
FileTable은 Windows 파일 시스템에 폴더로 나타나므로 파일을 이동하거나 복사하는 데 사용할 수 있는 방법으로 파일을 새 FileTable로 쉽게 로드할 수 있습니다.Since a FileTable appears as a folder in the Windows file system, you can easily load files into a new FileTable by using any of the available methods for moving or copying files. 이러한 방법에는 Windows 탐색기, 명령줄 옵션(xcopy, robocopy 등), 사용자 지정 스크립트나 응용 프로그램이 포함됩니다.These methods include Windows Explorer, command line options including xcopy and robocopy, and custom scripts or applications.

기존 폴더를 FileTable로 변환할 수 없습니다.You cannot convert an existing folder to a FileTable.
파일이 현재 파일 시스템에 저장되어 있습니다.Files are currently stored in the file system.

SQL ServerSQL Server 에 파일에 대한 포인터가 포함된 메타데이터의 테이블이 포함되어 있습니다. contains a table of metadata that contains pointers to the files.
첫 번째 단계는 위에서 설명한 방법 중 하나를 사용하여 파일을 이동하거나 복사하는 것입니다.The first step is to move or copy the files by using one of the methods mentioned above.

두 번째 단계는 파일의 새 위치를 가리키도록 기존 메타데이터 테이블을 업데이트하는 것입니다.The second step is to update the existing table of metadata to point to the new location of the files.

자세한 내용은 이 항목의 예: 파일 시스템에서 FileTable로 파일 마이그레이션 을 참조하세요.For more information, see Example: Migrating Files from the File System into a FileTable in this topic.

방법: FileTable로 파일 대량 로드 How To: Load Files into a FileTable

다음과 같은 방법으로 파일을 FileTable로 로드할 수 있습니다.The methods that you can use to load files into a FileTable include the following:

  • Windows 탐색기에서 원본 폴더의 파일을 새 FileTable 폴더로 끌어 옵니다.Drag and drop files from the source folders to the new FileTable folder in Windows Explorer.

  • 명령 프롬프트나 배치 파일 또는 스크립트에서 MOVE, COPY, XCOPY 또는 ROBOCOPY 등의 명령줄 옵션을 사용합니다.Use command line options such as MOVE, COPY, XCOPY, or ROBOCOPY from the command prompt or in a batch file or script.

  • System.IO 네임스페이스의 메서드를 사용하여 파일을 이동하거나 복사하는 사용자 지정 응용 프로그램을 C# 또는 Visual Basic.NET으로 작성합니다.Write a custom application in C# or Visual Basic.NET that uses methods from the System.IO namespace to move or copy the files.

예: 파일 시스템에서 FileTable로 파일 마이그레이션 Example: Migrating Files from the File System into a FileTable

이 시나리오에서는 파일이 파일 시스템에 저장되어 있고 파일에 대한 포인터가 포함된 메타데이터의 테이블이 SQL ServerSQL Server 에 있다고 가정합니다.In this scenario, your files are stored in the file system, and you have a table of metadata in SQL ServerSQL Server that contains pointers to the files. 파일을 FileTable로 이동한 다음 메타데이터에 있는 각 파일의 원래 UNC 경로를 FileTable UNC 경로로 바꾸려고 합니다.You want to move the files into a FileTable, and then replace the original UNC path for each file in the metadata with the FileTable UNC path. GetPathLocator(Transact-SQL) 함수를 사용하면 이 목표를 쉽게 달성할 수 있습니다.The GetPathLocator (Transact-SQL) function helps you to achieve this goal.

이 예의 경우 사진에 대한 데이터가 들어 있는 PhotoMetadata라는 기존 데이터베이스 테이블이 있다고 가정합니다.For this example, assume that there is an existing database table, PhotoMetadata, which contains data about photographs. 이 테이블에는 .jpg 파일의 실제 UNC 경로가 포함되어 있는 varchar (512) 형식의 UNCPath열이 있습니다.This table has a column UNCPath of type varchar(512) which contains the actual UNC path to a .jpg file.

파일 시스템의 이미지 파일을 FileTable로 마이그레이션하려면 다음을 수행해야 합니다.To migrate the image files from the file system into a FileTable, you have to do the following:

  1. 파일을 저장할 새 FileTable을 만듭니다.Create a new FileTable to hold the files. 이 예에서는 테이블 이름으로 dbo.PhotoTable을 사용하지만 테이블을 만드는 코드는 표시되지 않습니다.This example uses the table name, dbo.PhotoTable, but does not show the code to create the table.

  2. xcopy 또는 유사한 도구를 사용하여 .jpg 파일과 해당 디렉터리 구조를 FileTable의 루트 디렉터리에 복사합니다.Use xcopy or a similar tool to copy the .jpg files, with their directory structure, into the root directory of the FileTable.

  3. 다음과 유사한 코드를 사용하여 PhotoMetadata 테이블의 메타데이터를 수정합니다.Fix the metadata in the PhotoMetadata table, by using code similar to the following:

--  Add a path locator column to the PhotoMetadata table.  
ALTER TABLE PhotoMetadata ADD pathlocator hierarchyid;  

-- Get the root path of the Photo directory on the File Server.  
DECLARE @UNCPathRoot varchar(100) = '\\RemoteShare\Photographs';  

-- Get the root path of the FileTable.  
DECLARE @FileTableRoot varchar(1000);  
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');  

-- Update the PhotoMetadata table.  

-- Replace the File Server UNC path with the FileTable path.  
UPDATE PhotoMetadata  
    SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);  

-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.  
UPDATE PhotoMetadata  
    SET pathlocator = GetPathLocator(UNCPath);  

FileTable로 파일 대량 로드 Bulk Loading Files into a FileTable

FileTable은 다음과 같은 경우 대량 작업에서 일반 테이블처럼 동작합니다.A FileTable behaves like a normal table for bulk operations, with the following qualifications.

FileTable에 파일 및 디렉터리 네임스페이스의 무결성이 유지되도록 하는 시스템 정의 제약 조건이 있습니다.A FileTable has system-defined constraints which ensure that the integrity of the file and directory namespace is maintained. FileTable로 대량 로드되는 데이터에 대해 이러한 제약 조건을 확인해야 합니다.These constraints have to be verified on the data bulk loaded into the FileTable. 일부 대량 삽입 작업에서는 테이블 제약 조건이 무시될 수 있으므로 다음 요구 사항이 적용됩니다.Since some bulk insert operations allow table constraints to be ignored, the following requirements are enforced.

  • 제약 조건이 적용되는 대량 로드 작업은 FileTable에 대해 다른 테이블의 경우와 동일하게 실행할 수 있습니다.Bulk loading operations that enforce constraints can be run against a FileTable as against any other table. 이 범주에는 다음 작업이 포함됩니다.This category includes the following operations:

    • CHECK_CONSTRAINTS 절을 사용하는 bcpbcp with CHECK_CONSTRAINTS clause.

    • CHECK_CONSTRAINTS 절을 사용하는 BULK INSERTBULK INSERT with CHECK_CONSTRAINTS clause.

    • INSERT INTO …INSERT INTO … IGNORE_CONSTRAINTS 절을 사용하지 않는 SELECT * FROM OPENROWSET(BULK …)SELECT * FROM OPENROWSET(BULK …) without IGNORE_CONSTRAINTS clause.

  • FileTable 시스템 정의 제약 조건을 해제하지 않은 경우 제약 조건을 적용하지 않은 대량 로드 작업은 실패합니다.Bulk loading operations that do not enforce constraints fail unless the FileTable system-defined constraints have been disabled. 이 범주에는 다음 작업이 포함됩니다.This category includes the following operations:

    • CHECK_CONSTRAINTS 절을 사용하지 않는 bcpbcp without CHECK_CONSTRAINTS clause.

    • CHECK_CONSTRAINTS 절을 사용하지 않는 BULK INSERTBULK INSERT without CHECK_CONSTRAINTS clause.

    • INSERT INTO …INSERT INTO … IGNORE_CONSTRAINTS 절을 사용하는 SELECT * FROM OPENROWSET(BULK …)SELECT * FROM OPENROWSET(BULK …) with IGNORE_CONSTRAINTS clause.

방법: FileTable로 파일 대량 로드 How To: Bulk Load Files into a FileTable

다음과 같은 다양한 방법을 사용하여 파일을 FileTable로 대량 로드할 수 있습니다.You can use various methods to bulk load files into a FileTable:

  • bcpbcp

    • CHECK_CONSTRAINTS 절을 사용하여 호출합니다.Call with the CHECK_CONSTRAINTS clause.

    • FileTable 네임스페이스를 사용하지 않도록 설정하고, CHECK_CONSTRAINTS 절을 사용하지 않고 호출합니다.Disable the FileTable namespace and call without the CHECK_CONSTRAINTS clause. 그런 다음 FileTable 네임스페이스를 다시 사용하도록 설정합니다.Then re-enable the FileTable namespace.

  • BULK INSERTBULK INSERT

    • CHECK_CONSTRAINTS 절을 사용하여 호출합니다.Call with the CHECK_CONSTRAINTS clause.

    • FileTable 네임스페이스를 사용하지 않도록 설정하고, CHECK_CONSTRAINTS 절을 사용하지 않고 호출합니다.Disable the FileTable namespace and call without the CHECK_CONSTRAINTS clause. 그런 다음 FileTable 네임스페이스를 다시 사용하도록 설정합니다.Then re-enable the FileTable namespace.

  • INSERT INTO … SELECT * FROM OPENROWSET(BULK …)INSERT INTO … SELECT * FROM OPENROWSET(BULK …)

    • IGNORE_CONSTRAINTS 절을 사용하여 호출합니다.Call with the IGNORE_CONSTRAINTS clause.

    • FileTable 네임스페이스를 사용하지 않도록 설정하고, IGNORE_CONSTRAINTS 절을 사용하지 않고 호출합니다.Disable the FileTable namespace and call without the IGNORE_CONSTRAINTS clause. 그런 다음 FileTable 네임스페이스를 다시 사용하도록 설정합니다.Then re-enable the FileTable namespace.

    FileTable 제약 조건을 해제하는 방법은 FileTables 관리를 참조하세요.For information about disabling the FileTable constraints, see Manage FileTables.

방법: 대량 로드에 대한 FileTable 제약 조건 사용 안 함 How To: Disable FileTable Constraints for Bulk Loading

시스템 정의 제약 조건을 적용하는 오버헤드 없이 파일을 FileTable로 대량 로드하려면 제약 조건을 일시적으로 사용하지 않도록 설정할 수 있습니다.To bulk load files into a FileTable without the overhead of enforcing the system-defined constraints, you can temporarily disable the constraints. 자세한 내용은 FileTables 관리를 참조하세요.For more information, see Manage FileTables.

참고 항목See Also

Transact-SQL을 사용하여 FileTable에 액세스 Access FileTables with Transact-SQL
파일 입/출력 API를 사용하여 FileTable 액세스 Access FileTables with File Input-Output APIs