Transact-SQL을 사용하여 FILESTREAM 데이터 관리

이 항목에서는 Transact-SQL INSERT, UPDATE 및 DELETE 문을 사용하여 FILESTREAM 데이터를 관리하는 방법에 대해 설명합니다.

[!참고]

이 항목의 예에서는 방법: FILESTREAM 사용 데이터베이스 만들기방법: FILESTREAM 데이터 저장용 테이블 만들기에서 만든 FILESTREAM 사용 데이터베이스 및 테이블이 필요합니다.

FILESTREAM 데이터가 들어 있는 행 삽입

FILESTREAM 데이터를 지원하는 테이블에 행을 추가하려면 Transact-SQL INSERT 문을 사용합니다. FILESTREAM 열에 데이터를 삽입할 때 NULL 또는 varbinary(max) 값을 삽입할 수 있습니다.

NULL 삽입

다음 예에서는 NULL을 삽입하는 방법을 보여 줍니다. FILESTREAM 값이 NULL이면 데이터베이스 엔진이 파일 시스템에 파일을 만들지 않습니다.

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

길이가 0인 레코드 삽입

다음 예에서는 INSERT를 사용하여 길이가 0인 레코드를 만드는 방법을 보여 줍니다. 길이가 0인 레코드는 파일 핸들을 가져와야 하지만 Win32 API를 사용하여 파일을 조작하는 경우에 유용합니다.

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

데이터 파일 만들기

다음 예에서는 INSERT를 사용하여 데이터가 들어 있는 파일을 만드는 방법을 보여 줍니다. 데이터베이스 엔진은 문자열 Seismic Data를 varbinary(max) 값으로 변환합니다. FILESTREAM은 Windows 파일이 아직 없는 경우 이를 만든 다음 데이터를 데이터 파일에 추가합니다.

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

Archive.dbo.Records 테이블의 데이터를 모두 선택하면 결과가 다음 표와 유사하지만 Id 열에는 다른 GUID가 포함됩니다.

Id

SerialNumber

Resume

C871B90F-D25E-47B3-A560-7CC0CA405DAC

1

NULL

F8F5C314-0559-4927-8FA9-1535EE0BDF50

2

0x

7F680840-B7A4-45D4-8CD5-527C44D35B3F

3

0x536569736D69632044617461

FILESTREAM 데이터 업데이트

Transact-SQL을 사용하여 파일 시스템 파일의 데이터를 업데이트할 수 있지만 많은 양의 데이터를 파일로 스트리밍해야 하는 경우에는 이렇게 하지 않는 것이 좋습니다.

다음 예에서는 파일 레코드에 있는 임의의 텍스트를 Xray 1로 바꿉니다.

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

FILESTREAM 데이터 삭제

FILESTREAM 필드가 들어 있는 행을 삭제하면 해당 내부 파일 시스템 파일도 삭제됩니다. 행과 그 안에 들어 있는 파일을 삭제하는 유일한 방법은 Transact-SQL DELETE 문을 사용하는 것입니다.

다음 예에서는 행과 관련 파일 시스템 파일을 삭제하는 방법을 보여 줍니다.

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

dbo.Archive 테이블의 데이터를 모두 선택하면 해당 행이 삭제되고 관련 파일도 더 이상 사용할 수 없게 됩니다.

[!참고]

기본 파일은 FILESTREAM 가비지 수집기를 통해 제거됩니다.