이 항목에서는 Transact-SQL INSERT, UPDATE 및 DELETE 문을 사용하여 FILESTREAM 데이터를 관리하는 방법에 대해 설명합니다.
비고
이 항목의 예제에는 FILESTREAM 사용 데이터베이스와 FILESTREAM-Enabled 데이터베이스 만들기 및 FILESTREAM 데이터 저장을 위한 테이블 만들기에서 만든 테이블이 필요합니다.
FILESTREAM 데이터가 포함된 행 삽입
FILESTREAM 데이터를 지원하는 테이블에 행을 추가하려면 Transact-SQL INSERT 문을 사용합니다. FILESTREAM 열에 데이터를 삽입할 때 NULL 또는 varbinary(max) 값을 삽입할 수 있습니다.
NULL 삽입
다음 예제에서는 삽입 NULL하는 방법을 보여 있습니다. FILESTREAM 값이면 NULL데이터베이스 엔진이 파일 시스템에 파일을 만들지 않습니다.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
Zero-Length 레코드 삽입
다음 예제에서는 길이가 0인 레코드를 만드는 데 사용하는 INSERT 방법을 보여줍니다. 이는 파일 핸들을 가져오려는 경우에 유용하지만 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가 포함될 것입니다.
| 아이디 | 시리얼 번호 | 이력서 |
|---|---|---|
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 가비지 수집기를 통해 제거됩니다.