텍스트 및 이미지 데이터 사용

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 varchar(max), nvarchar(max) 및 varbinary(max) 데이터 형식을 사용하십시오. 자세한 내용은 큰 값 데이터 형식 사용을 참조하십시오.

Microsoft SQL Server에서는 8,000자가 넘는 문자열과 8,000바이트보다 긴 이진 데이터를 각각 text 및 image라는 특수 데이터 형식에 저장합니다. 4,000자보다 긴 유니코드 문자열은 ntext 데이터 형식에 저장됩니다.

예를 들어 고객 정보를 저장한 큰 텍스트 파일(.txt)을 SQL Server 데이터베이스로 가져와야 한다고 가정합니다. 이 데이터는 데이터 테이블의 여러 열로 통합된 데이터가 아니라 하나의 데이터로 저장해야 합니다. 이 경우 text 데이터 형식의 열을 만들 수 있습니다. 그러나 현재 각각 10KB인 TIFF 이미지(.tif)로 저장된 회사 로고를 저장해야 하는 경우에는 image 데이터 형식의 열을 만듭니다.

저장할 텍스트 데이터가 유니코드 형식이면 ntext 데이터 형식을 사용합니다. 예를 들어 전세계 고객을 위해 작성된 양식 편지에는 여러 언어에서 사용되는 국가별 맞춤법 및 문자가 들어 있습니다. 이 데이터는 ntext 열에 저장하십시오.

각 text 및 ntext 데이터 값에는 데이터 정렬이 있습니다. 데이터 정렬은 비교 규칙, 대소문자 구분 또는 악센트 등의 특성을 정의합니다. text 값에 대한 데이터 정렬은 각 문자를 나타내는 비트 패턴을 정의하는 코드 페이지도 지정합니다. 각 ntext 값은 모든 데이터 정렬에 대해 동일한 유니코드 코드 페이지를 사용합니다. 각 데이터베이스에는 기본 데이터 정렬이 있습니다. text 또는 ntext 열을 만들면 COLLATE 절을 사용하여 특정 데이터 정렬을 할당하지 않는 한 데이터베이스의 기본 데이터 정렬이 할당됩니다. 서로 다른 데이터 정렬을 사용하는 두 개의 text 또는 ntext 값을 결합하거나 비교하는 경우 데이터 정렬 우선 순위 규칙에 따라 작업에 사용되는 데이터 정렬이 결정됩니다.

image 데이터에 있는 데이터는 비트 문자열로 저장되고 SQL Server에서 해석되지 않습니다. image 열에 있는 데이터에 대한 모든 해석은 응용 프로그램에서 이루어져야 합니다. 예를 들어 응용 프로그램은 데이터를 BMP, TIFF, GIF 또는 JPEG 형식을 사용하는 image 열에 저장할 수 있습니다. image 열에서 데이터를 읽는 응용 프로그램은 데이터 형식을 인식하고 제대로 표시할 수 있어야 합니다. image 열은 이미지 데이터 값을 만드는 비트 스트림을 저장하는 위치만 제공합니다.

행에서 텍스트를 사용하여 text, ntext 및 image 값 저장

일반적으로 text, ntext 또는 image 문자열은 최대 2GB의 큰 문자 또는 이진 문자열이며 데이터 행 외부에 저장됩니다. 데이터 행에는 문자열 조각이 저장된 페이지를 매핑하는 내부 포인터로 구성된 트리의 루트 노드를 가리키는 16바이트 텍스트 포인터만 들어 있습니다.

SQL Server를 사용하면 데이터 행에 크기가 작거나 중간 정도인 text, ntext 및 image 값을 저장할 수 있으므로 이러한 값에 액세스하는 쿼리 속도를 향상시킬 수 있습니다.

text, ntext 또는 image 문자열을 데이터 행에 저장하면 SQL Server에서 문자열을 읽거나 쓰기 위해 별도의 페이지나 페이지 집합에 액세스할 필요가 없습니다. 따라서 text, ntext 또는 image 행 내부 문자열을 읽거나 쓰는 속도가 varchar, nvarchar 또는 varbinary 문자열을 읽는 속도만큼 빨라집니다.

text, ntext 또는 image 문자열을 데이터 행에 저장하려면 sp_tableoption 저장 프로시저를 사용하여 text in row 옵션을 설정합니다.

sp_tableoption N'MyTable', 'text in row', 'ON';

또는 데이터 행에 저장될 수 있는 text, ntext 및 image 문자열의 최대 길이 제한을 24-7000바이트로 지정할 수 있습니다.

sp_tableoption N'MyTable', 'text in row', '1000';

특정 제한 대신 'ON'을 지정하면 기본 제한 값이 256바이트가 됩니다. 이 기본값을 사용하면 최상의 성능을 얻을 수 있습니다. 이는 작은 문자열과 루트 텍스트 포인터를 행에 저장할 수 있을 만큼 크지만 페이지당 행 수를 줄여 성능에 영향을 줄 만큼 크지는 않습니다.

일반적으로 값을 72 이하로 설정해도 안 되지만 특히 대부분의 문이 text, ntext, 및 image 열을 참조하지 않거나 text, ntext 및 image 열이 여러 개 있는 테이블에서 값을 너무 높게 설정해서도 안 됩니다.

sp_tableoption을 사용하여 옵션 값을 'OFF' 또는 0으로 지정해서 옵션을 해제할 수 있습니다.

sp_tableoption N'MyTable', 'text in row', 'OFF';