<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=MS-SQL_LOB%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%83%9D%EC%84%B1</id>
	<title>MS-SQL LOB테이블 생성 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=MS-SQL_LOB%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%83%9D%EC%84%B1"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=MS-SQL_LOB%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%83%9D%EC%84%B1&amp;action=history"/>
	<updated>2026-09-15T06:03:35Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=MS-SQL_LOB%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%83%9D%EC%84%B1&amp;diff=1815&amp;oldid=prev</id>
		<title>Dbstudy: 새 문서: == SQL Server LOB(Large Object) 테이블 == === 개요 === 1. LOB 데이터 타입 종류  {| class=&quot;wikitable&quot; |+ LOB 데이터 타입 종류 |- ! 데이터 타입 !! 설명 !! 최대 크기  |- | VARCHAR(MAX) || 가변 길이 문자 데이터 || 2GB || |- | NVARCHAR(MAX) || 가변 길이 유니코드 문자 || 2GB || |- | VARBINARY(MAX) || 가변 길이 이진 데이터 || 2GB || |- | TEXT (구식) || 문자 데이터 (사용 지양) || 2GB || |- | NTEXT (구식) || 유니코...</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=MS-SQL_LOB%ED%85%8C%EC%9D%B4%EB%B8%94_%EC%83%9D%EC%84%B1&amp;diff=1815&amp;oldid=prev"/>
		<updated>2026-09-14T02:07:13Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == SQL Server LOB(Large Object) 테이블 == === 개요 === 1. LOB 데이터 타입 종류  {| class=&amp;quot;wikitable&amp;quot; |+ LOB 데이터 타입 종류 |- ! 데이터 타입 !! 설명 !! 최대 크기  |- | VARCHAR(MAX) || 가변 길이 문자 데이터 || 2GB || |- | NVARCHAR(MAX) || 가변 길이 유니코드 문자 || 2GB || |- | VARBINARY(MAX) || 가변 길이 이진 데이터 || 2GB || |- | TEXT (구식) || 문자 데이터 (사용 지양) || 2GB || |- | NTEXT (구식) || 유니코...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== SQL Server LOB(Large Object) 테이블 ==&lt;br /&gt;
=== 개요 ===&lt;br /&gt;
1. LOB 데이터 타입 종류&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ LOB 데이터 타입 종류&lt;br /&gt;
|-&lt;br /&gt;
! 데이터 타입 !! 설명 !! 최대 크기 &lt;br /&gt;
|-&lt;br /&gt;
| VARCHAR(MAX) || 가변 길이 문자 데이터 || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| NVARCHAR(MAX) || 가변 길이 유니코드 문자 || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| VARBINARY(MAX) || 가변 길이 이진 데이터 || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| TEXT (구식) || 문자 데이터 (사용 지양) || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| NTEXT (구식) || 유니코드 문자 (사용 지양) || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| IMAGE (구식) || 이진 데이터 (사용 지양) || 2GB ||&lt;br /&gt;
|-&lt;br /&gt;
| XML || XML 데이터 || 2GB ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;gt; ⚠️ TEXT, NTEXT, IMAGE는 **Deprecated**(사용 중단 예정)이므로 VARCHAR(MAX), NVARCHAR(MAX), VARBINARY(MAX) 사용을 권장합니다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2. 기본 LOB 테이블 생성&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE TABLE Documents (&lt;br /&gt;
    DocumentID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    Title NVARCHAR(200) NOT NULL,&lt;br /&gt;
    Content NVARCHAR(MAX),           -- 대용량 텍스트&lt;br /&gt;
    FileData VARBINARY(MAX),         -- 대용량 이진 데이터 (파일)&lt;br /&gt;
    Summary VARCHAR(MAX),            -- 대용량 텍스트&lt;br /&gt;
    Metadata XML,                    -- XML 데이터&lt;br /&gt;
    CreatedDate DATETIME DEFAULT GETDATE()&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
3. 파일 저장용 테이블 예제&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE TABLE FileStorage (&lt;br /&gt;
    FileID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    FileName NVARCHAR(255) NOT NULL,&lt;br /&gt;
    FileExtension NVARCHAR(10),&lt;br /&gt;
    FileSize BIGINT,&lt;br /&gt;
    FileContent VARBINARY(MAX) NOT NULL,   -- 실제 파일 바이너리 저장&lt;br /&gt;
    ContentType NVARCHAR(100),&lt;br /&gt;
    UploadedBy NVARCHAR(100),&lt;br /&gt;
    UploadedDate DATETIME DEFAULT GETDATE()&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 파일 삽입 예제&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
INSERT INTO FileStorage (FileName, FileExtension, FileSize, FileContent, ContentType)&lt;br /&gt;
SELECT &lt;br /&gt;
    &amp;#039;sample.pdf&amp;#039;,&lt;br /&gt;
    &amp;#039;.pdf&amp;#039;,&lt;br /&gt;
    100000,&lt;br /&gt;
    BulkColumn,&lt;br /&gt;
    &amp;#039;application/pdf&amp;#039;&lt;br /&gt;
FROM OPENROWSET(BULK &amp;#039;C:\Files\sample.pdf&amp;#039;, SINGLE_BLOB) AS FileData;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
4. FILESTREAM을 사용한 LOB 저장 (대용량 파일 최적화)&lt;br /&gt;
&lt;br /&gt;
* FILESTREAM은 파일시스템을 이용해 대용량 이진 데이터를 효율적으로 저장합니다.&lt;br /&gt;
&lt;br /&gt;
4-1. FILESTREAM 활성화 (서버 레벨)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
-- SQL Server 구성 관리자에서도 활성화 필요&lt;br /&gt;
EXEC sp_configure filestream_access_level, 2;&lt;br /&gt;
RECONFIGURE;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4-2. FILESTREAM 지원 데이터베이스 생성&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE DATABASE FileStreamDB&lt;br /&gt;
ON PRIMARY &lt;br /&gt;
    (NAME = FileStreamDB_Data, &lt;br /&gt;
     FILENAME = &amp;#039;C:\Data\FileStreamDB.mdf&amp;#039;),&lt;br /&gt;
FILEGROUP FileStreamGroup CONTAINS FILESTREAM&lt;br /&gt;
    (NAME = FileStreamDB_Filestream, &lt;br /&gt;
     FILENAME = &amp;#039;C:\Data\FileStreamDB_Filestream&amp;#039;)&lt;br /&gt;
LOG ON &lt;br /&gt;
    (NAME = FileStreamDB_Log, &lt;br /&gt;
     FILENAME = &amp;#039;C:\Data\FileStreamDB.ldf&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4-3. FILESTREAM 테이블 생성&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
USE FileStreamDB;&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE FileStreamDocuments (&lt;br /&gt;
    DocumentID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWID(),&lt;br /&gt;
    FileName NVARCHAR(255),&lt;br /&gt;
    FileData VARBINARY(MAX) FILESTREAM,   -- FILESTREAM 컬럼&lt;br /&gt;
    CreatedDate DATETIME DEFAULT GETDATE()&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; 💡 FILESTREAM 컬럼은 반드시 테이블에 `ROWGUIDCOL` 속성을 가진 UNIQUEIDENTIFIER 컬럼이 있어야 합니다.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
5. LOB 컬럼 조회 및 처리&lt;br /&gt;
&lt;br /&gt;
5-1. 텍스트 LOB 삽입/조회&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
INSERT INTO Documents (Title, Content)&lt;br /&gt;
VALUES (&amp;#039;긴 문서&amp;#039;, REPLICATE(&amp;#039;가나다라마바사&amp;#039;, 10000));  -- 대용량 텍스트 생성&lt;br /&gt;
&lt;br /&gt;
SELECT DocumentID, Title, LEN(Content) AS ContentLength&lt;br /&gt;
FROM Documents;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5-2. 이진 파일 데이터 조회 (내보내기)&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
-- 특정 행의 이진 데이터를 파일로 저장 (SSMS에서 결과를 파일로 저장)&lt;br /&gt;
SELECT FileContent &lt;br /&gt;
FROM FileStorage&lt;br /&gt;
WHERE FileID = 1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5-3. TEXTPTR 및 UPDATETEXT (구식, TEXT 타입에서 사용)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
-- 구식 방식은 잘 사용하지 않음. MAX 타입은 일반 UPDATE로 처리 가능&lt;br /&gt;
UPDATE Documents&lt;br /&gt;
SET Content = Content + N&amp;#039; 추가 텍스트&amp;#039;&lt;br /&gt;
WHERE DocumentID = 1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
6. LOB 데이터 관련 성능/저장 옵션&lt;br /&gt;
&lt;br /&gt;
6-1. 테이블 저장 옵션 (LOB 데이터 별도 파일 그룹 지정)&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE TABLE LargeDataTable (&lt;br /&gt;
    ID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    Content NVARCHAR(MAX)&lt;br /&gt;
)&lt;br /&gt;
TEXTIMAGE_ON [SECONDARY];   -- LOB 데이터를 SECONDARY 파일 그룹에 저장&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6-2. LOB 압축 (페이지/행 압축)&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE TABLE CompressedLOB (&lt;br /&gt;
    ID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    LargeText NVARCHAR(MAX)&lt;br /&gt;
)&lt;br /&gt;
WITH (DATA_COMPRESSION = PAGE);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; 💡 참고: 압축은 LOB 데이터 자체가 아니라 행 내 저장된(인라인) 부분에 적용됩니다. LOB이 별도 페이지에 저장되면 압축 대상에서 제외될 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== 실전 예제: 게시판 첨부파일 테이블 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
CREATE TABLE Board (&lt;br /&gt;
    BoardID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    Title NVARCHAR(200) NOT NULL,&lt;br /&gt;
    Content NVARCHAR(MAX),&lt;br /&gt;
    WriterID NVARCHAR(50),&lt;br /&gt;
    CreatedDate DATETIME DEFAULT GETDATE()&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE BoardAttachment (&lt;br /&gt;
    AttachmentID INT IDENTITY(1,1) PRIMARY KEY,&lt;br /&gt;
    BoardID INT NOT NULL,&lt;br /&gt;
    FileName NVARCHAR(255) NOT NULL,&lt;br /&gt;
    FileData VARBINARY(MAX) NOT NULL,&lt;br /&gt;
    FileSize BIGINT,&lt;br /&gt;
    UploadedDate DATETIME DEFAULT GETDATE(),&lt;br /&gt;
    CONSTRAINT FK_Board FOREIGN KEY (BoardID)&lt;br /&gt;
        REFERENCES Board(BoardID) ON DELETE CASCADE&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 데이터 삽입 및 조회&lt;br /&gt;
&amp;lt;source lang=sql&amp;gt;&lt;br /&gt;
-- 게시글 삽입&lt;br /&gt;
INSERT INTO Board (Title, Content, WriterID)&lt;br /&gt;
VALUES (&amp;#039;공지사항&amp;#039;, N&amp;#039;매우 긴 게시글 내용...&amp;#039;, &amp;#039;admin&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
-- 첨부파일 삽입&lt;br /&gt;
INSERT INTO BoardAttachment (BoardID, FileName, FileData, FileSize)&lt;br /&gt;
SELECT &lt;br /&gt;
    1,&lt;br /&gt;
    &amp;#039;notice.docx&amp;#039;,&lt;br /&gt;
    BulkColumn,&lt;br /&gt;
    DATALENGTH(BulkColumn)&lt;br /&gt;
FROM OPENROWSET(BULK &amp;#039;C:\Files\notice.docx&amp;#039;, SINGLE_BLOB) AS Doc;&lt;br /&gt;
&lt;br /&gt;
-- 게시글과 첨부파일 조회&lt;br /&gt;
SELECT b.Title, a.FileName, a.FileSize&lt;br /&gt;
FROM Board b&lt;br /&gt;
INNER JOIN BoardAttachment a ON b.BoardID = a.BoardID&lt;br /&gt;
WHERE b.BoardID = 1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
💡 LOB 사용 시 주의사항&lt;br /&gt;
&lt;br /&gt;
# **VARCHAR(MAX)/NVARCHAR(MAX)/VARBINARY(MAX)** 사용 권장 (TEXT/NTEXT/IMAGE는 지양)&lt;br /&gt;
# 대용량 파일은 **FILESTREAM** 또는 **파일시스템 + 경로 저장 방식** 고려&lt;br /&gt;
# LOB 컬럼이 많으면 **백업/복구 시간 증가**&lt;br /&gt;
# 자주 변경되지 않는 대용량 데이터는 **읽기 전용 파일그룹** 활용 고려&lt;br /&gt;
# 애플리케이션에서 스트리밍 방식으로 처리하면 메모리 효율적&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
</feed>