Transact-SQL을 사용하여 FILESTREAM 데이터 액세스Access FILESTREAM Data with Transact-SQL

이 항목에서는 Transact-SQLTransact-SQL INSERT, UPDATE 및 DELETE 문을 사용하여 FILESTREAM 데이터를 관리하는 방법에 대해 설명합니다.This topic describes how to use the Transact-SQLTransact-SQL INSERT, UPDATE, and DELETE statements to manage FILESTREAM data.

참고

이 항목의 예에서는 FILESTREAM 사용 데이터베이스 만들기FILESTREAM 데이터 저장용 테이블 만들기에서 만든 FILESTREAM 사용 데이터베이스 및 테이블이 필요합니다.The examples in this topic require the FILESTREAM-enabled database and table that are created in Create a FILESTREAM-Enabled Database and Create a Table for Storing FILESTREAM Data.

FILESTREAM 데이터가 들어 있는 행 삽입 Inserting a Row That Contains FILESTREAM Data

FILESTREAM 데이터를 지원하는 테이블에 행을 추가하려면 Transact-SQLTransact-SQL INSERT 문을 사용합니다.To add a row to a table that supports FILESTREAM data, use the Transact-SQLTransact-SQL INSERT statement. FILESTREAM 열에 데이터를 삽입할 때 NULL 또는 varbinary(max) 값을 삽입할 수 있습니다.When you insert data into a FILESTREAM column, you can insert NULL or a varbinary(max) value.

NULL 삽입Inserting NULL

다음 예에서는 NULL을 삽입하는 방법을 보여 줍니다.The following example shows how to insert NULL. FILESTREAM 값이 NULL이면 데이터베이스 엔진Database Engine 이 파일 시스템에 파일을 만들지 않습니다.When the FILESTREAM value is NULL, the 데이터베이스 엔진Database Engine does not create a file in the file system.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 1, NULL);
GO

길이가 0인 레코드 삽입Inserting a Zero-Length Record

다음 예에서는 INSERT 를 사용하여 길이가 0인 레코드를 만드는 방법을 보여 줍니다.The following example shows how to use INSERT to create a zero-length record. 길이가 0인 레코드는 파일 핸들을 가져와야 하지만 Win32 API를 사용하여 파일을 조작하는 경우에 유용합니다.This is useful for when you want to obtain a file handle, but will be manipulating the file by using Win32 APIs.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 2, 
      CAST ('' as varbinary(max)));
GO

데이터 파일 만들기Creating a Data File

다음 예에서는 INSERT 를 사용하여 데이터가 들어 있는 파일을 만드는 방법을 보여 줍니다.The following example shows how to use INSERT to create a file that contains data. 데이터베이스 엔진Database Engine 은 문자열 Seismic Datavarbinary(max) 값으로 변환합니다.The 데이터베이스 엔진Database Engine converts the string Seismic Data to a varbinary(max) value. FILESTREAM은 Windows 파일이 아직 없는 경우 이를 만든 다음 데이터를 데이터 파일에 추가합니다.FILESTREAM creates the Windows file if it does not already exist.The data is then added to the data file.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO

Archive``dbo.RecordsWhen you select all data from the Archive.dbo.Records 테이블의 데이터를 모두 선택하면 결과가 다음 표와 유사하지만table, the results are similar to the results that are shown in the following table. Id 열에는 다른 GUID가 포함됩니다.However, the Id column will contain different GUIDs.

IdId SerialNumberSerialNumber 재개Resume
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

FILESTREAM 데이터 업데이트 Updating FILESTREAM Data

Transact-SQLTransact-SQL 을 사용하여 파일 시스템 파일의 데이터를 업데이트할 수 있지만 많은 양의 데이터를 파일로 스트리밍해야 하는 경우에는 이렇게 하지 않는 것이 좋습니다.You can use Transact-SQLTransact-SQL to update the data in the file system file; although, you might not want to do this when you have to stream large amounts of data to a file.

다음 예에서는 파일 레코드에 있는 임의의 텍스트를 Xray 1로 바꿉니다.The following example replaces any text in the file record with the text Xray 1.

UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;

FILESTREAM 데이터 삭제 Deleting FILESTREAM Data

FILESTREAM 필드가 들어 있는 행을 삭제하면 해당 내부 파일 시스템 파일도 삭제됩니다.When you delete a row that contains a FILESTREAM field, you also delete its underlying file system files. 행과 그 안에 들어 있는 파일을 삭제하는 유일한 방법은 Transact-SQLTransact-SQL DELETE 문을 사용하는 것입니다.The only way to delete a row, and therefore the file, is to use the Transact-SQLTransact-SQL DELETE statement.

다음 예에서는 행과 관련 파일 시스템 파일을 삭제하는 방법을 보여 줍니다.The following example shows how to delete a row and its associated file system files.

DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO

dbo.Archive 테이블의 데이터를 모두 선택하면 해당 행이 삭제되고When you select all data from the dbo.Archive table, the row is gone. 관련 파일도 더 이상 사용할 수 없게 됩니다.You can no longer use the associated file.

참고

기본 파일은 FILESTREAM 가비지 수집기를 통해 제거됩니다.The underlying files are removed by the FILESTREAM garbage collector.

참고 항목See Also

FILESTREAM 사용 및 구성 Enable and Configure FILESTREAM
FILESTREAM 응용 프로그램에서 데이터베이스 작업과의 충돌 방지 Avoid Conflicts with Database Operations in FILESTREAM Applications