sp_tableoption(Transact-SQL)

업데이트: 2006년 12월 12일

사용자 정의 테이블의 옵션 값을 설정합니다. sp_tableoption을 사용하여 varchar(max), nvarchar(max), varbinary(max), xml, text, ntext 또는 image 열이 있는 테이블의 행 내부 동작을 제어할 수 있습니다.

ms173530.note(ko-kr,SQL.90).gif중요:
text in row 기능은 이후 버전의 SQL Server에서 제거될 예정입니다. 큰 값 데이터를 저장하려면 varchar(max), nvarchar(max)varbinary(max) 데이터 형식을 사용하는 것이 좋습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_tableoption [ @TableNamePattern = ] 'table' 
          , [ @OptionName = ] 'option_name' 
          , [ @OptionValue = ] 'value'

인수

  • [ @TableNamePattern = ] 'table'
    사용자 정의 데이터베이스 테이블의 정규화된 또는 비정규화된 이름입니다. 데이터베이스 이름을 포함한 정규화된 테이블 이름인 경우 데이터베이스 이름이 반드시 현재 데이터베이스의 이름이어야 합니다. 여러 테이블에 대한 테이블 옵션을 동시에 설정할 수 없습니다. table_pattern은 **nvarchar(776)**이며 기본값은 없습니다.
  • [ @OptionName = ] 'option_name'
    테이블 옵션 이름입니다. option_name은 **varchar(35)**이며 기본값은 NULL이 아닙니다. option_name은 다음 값 중 하나일 수 있습니다.

    설명

    table lock on bulk load

    기본값이 해제되면 사용자 정의 테이블에 대량 로드 처리를 수행하여 행 잠금을 얻습니다. 기본값이 설정되면 사용자 정의 테이블에 대량 로드 처리를 수행하여 대량 업데이트 잠금을 얻습니다.

    insert row lock

    SQL Server 2005에서 지원되지 않습니다.

    SQL Server의 잠금 전략은 잠금 수준을 페이지 또는 테이블 잠금 수준으로 올릴 수 있는 행 잠금입니다. 이 옵션은 SQL Server의 잠금 동작에 영향을 주지 않으며 기존 스크립트 및 프로시저와의 호환성을 위해 포함됩니다.

    text in row

    OFF 또는 0(해제, 기본값)이면 현재 동작을 바꾸지 않으며 행에 BLOB이 없습니다.

    이 값이 지정되고 @OptionValueON(설정) 또는 24에서 7000까지의 정수 값이면 새 text, ntext 또는 image 문자열이 데이터 행에 직접 저장됩니다. 기존의 모든 BLOB(Binary Large Object) 데이터, 예를 들어 text, ntext 또는 image 데이터는 BLOB 값이 업데이트될 때 text in row 형식으로 변경됩니다. 자세한 내용은 주의를 참조하십시오.

    large value types out of row

    1 = 테이블의 varchar(max), nvarchar(max), varbinary(max)xml 열은 루트에 대한 16바이트 포인터와 함께 행 외부에 저장됩니다.

    0 = varchar(max), nvarchar(max), varbinary(max)xml 값은 레코드에 맞는 한 최대 8000바이트까지 데이터 행에 직접 저장됩니다. 값이 레코드에 맞지 않으면 포인터는 행 내부에 저장되고 나머지는 행 외부 LOB 저장 공간에 저장됩니다.

    vardecimal storage format

    TRUE, ON 또는 1이면 지정된 테이블을 VarDecimal 저장소 형식에 사용할 수 있습니다. FALSE, OFF 또는 0이면 지정된 테이블을 VarDecimal 저장소 형식에 사용할 수 없습니다. sp_db_vardecimal_storage_format을 사용하여 데이터베이스를 VarDecimal 저장소 형식에 사용하도록 설정한 경우에만 VarDecimal 저장소 형식을 사용할 수 있습니다. VarDecimal 저장소 형식에 대한 자세한 내용은 Decimal 데이터를 가변 길이로 저장을 참조하십시오. 이 옵션을 사용하려면 SQL Server 2005 서비스 팩 2가 필요합니다. VarDecimal 저장소 형식은 SQL Server 2005 Enterprise Edition, Developer Edition 및 Evaluation Edition에서만 사용할 수 있습니다.

  • [ @OptionValue = ] 'value'
    option_name의 설정(true, on 또는 1) 또는 해제(false, off 또는 0) 여부를 지정합니다. value는 **varchar(12)**이며 기본값은 없습니다. value는 대/소문자를 구분하지 않습니다.

    text in row 옵션에서 유효한 옵션 값은 0, on, off 또는 24에서 7000까지의 정수입니다. valueon이면 기본 제한 값은 256바이트입니다.

반환 코드 값

0(성공) 또는 오류 번호(실패)

주의

sp_tableoption은 사용자 정의 테이블의 옵션 값을 설정할 때만 사용합니다. 테이블 속성을 나타내려면 OBJECTPROPERTY를 사용하십시오.

sp_tableoptiontext in row 옵션은 텍스트 열을 포함하는 테이블에서만 설정 또는 해제될 수 있습니다. 테이블에 텍스트 열이 없으면 SQL Server에서 오류가 발생합니다.

text in row 옵션을 설정하면 **@OptionValue** 매개 변수를 사용하여 BLOB에 대한 행에 저장되는 최대 크기를 지정할 수 있습니다. 기본값은 256바이트이며 24에서 7000바이트까지의 범위에서 값을 지정할 수 있습니다.

다음과 같은 경우 text, ntext 또는 image 문자열은 데이터 행에 저장됩니다.

  • text in row가 설정된 경우
  • 문자열의 길이가 **@OptionValue**에 지정된 제한보다 짧은 경우
  • 데이터 행에 사용할 수 있는 충분한 공간이 있을 경우

BLOB 문자열이 데이터 행에 저장된 경우 문자와 이진 문자열과 마찬가지로 text, ntext 또는 image 문자열을 빠르게 읽고 쓸 수 있습니다. SQL Server에서는 BLOB 문자열을 읽거나 쓰기 위해 별도의 페이지를 액세스할 필요가 없습니다.

text, ntext 또는 image 문자열이 지정된 제한보다 크거나 행에서 사용 가능한 공간보다 큰 경우에는 문자열 대신 포인터가 행에 저장됩니다. 하지만 이 경우에도 행에 BLOB 문자열을 저장하기 위한 조건이 적용됩니다. 포인터를 저장할 때도 데이터 행에 충분한 공간이 필요합니다.

테이블의 행에 저장된 BLOB 문자열과 포인터는 가변 길이 문자열과 비슷하게 취급됩니다. SQL Server는 문자열 또는 포인터를 저장하는 데 필요한 바이트 수만 사용합니다.

기존 BLOB 문자열은 text in row가 처음 설정될 때 즉시 변환되지 않고 업데이트될 때만 변환됩니다. 마찬가지로 text in row 옵션 제한 값이 증가될 때 이미 데이터 행에 있는 text, ntext 또는 image 문자열은 업데이트되기 전까지는 새로운 제한 값을 적용하기 위해 변환되지 않습니다.

[!참고] text in row 옵션을 해제하거나 옵션의 제한 값을 줄이려면 모든 BLOB을 변환해야 하므로 변환해야 하는 BLOB 문자열 수에 따라 프로세스가 오래 걸릴 수도 있습니다. 변환을 처리하는 동안 테이블은 잠깁니다.

table 변수를 반환하는 함수를 포함한 table 변수는 inline limit를 기본값(256)으로 설정한 text in row 옵션을 자동으로 갖게 됩니다. 이 옵션은 변경되지 않습니다.

text in row는 TEXTPTR, WRITETEXT, UPDATETEXT 및 READTEXT 함수를 지원합니다. SUBSTRING() 함수를 사용하여 BLOB을 부분적으로 읽을 수 있지만 행 내부 텍스트 포인터에는 다른 텍스트 포인터와는 다른 기간 및 숫자 제한이 있습니다. 자세한 내용은 ntext, text 및 image 데이터 관리를 참조하십시오.

테이블의 VarDecimal 저장소 형식을 Decimal 저장소 형식으로 변경하려면 데이터베이스는 단순 복구 모드이어야 합니다. 복구 모드를 변경하면 백업 목적의 로그 체인이 끊어지므로 테이블에서 VarDecimal 저장소 형식을 제거한 후 전체 데이터베이스 백업을 만들어야 합니다.

사용 권한

sp_tableoption을 실행하려면 테이블에 대한 ALTER 권한이 필요합니다.

1. xml 데이터를 행 외부에 저장

다음 예에서는 HumanResources.JobCandidate 테이블의 xml 데이터를 행 외부에 저장하도록 지정합니다.

USE AdventureWorks;
GO
EXEC sp_tableoption 'HumanResources.JobCandidate', 'large value types out of row', 1;

2. 테이블에 VarDecimal 저장소 형식 사용

다음 예에서는 decimal 데이터 형식을 VarDecimal 저장소 형식으로 저장하도록 Production.WorkOrderRouting 테이블을 수정합니다.

USE master;
GO
-- The database must be enabled for vardecimal storage format
-- before a table can be enabled for vardecimal storage format.
EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON';
GO
USE AdventureWorks;
GO
EXEC sp_tableoption 'Production.WorkOrderRouting', 
   'vardecimal storage format', 'ON';

참고 항목

참조

sys.tables(Transact-SQL)
OBJECTPROPERTY(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)
데이터베이스 엔진 저장 프로시저(Transact-SQL)

관련 자료

행 내부 데이터

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • SQL Server 2005 서비스 팩 2에서 사용할 수 있는 VarDecimal 저장소 형식 옵션에 대한 정보를 추가했습니다.