다음을 통해 공유


WRITETEXT(Transact-SQL)

기존 text, ntext 또는 image 열의 최소 로깅 대화형 업데이트를 허용합니다. WRITETEXT는 영향을 받는 열에 있는 모든 기존 데이터를 덮어씁니다. WRITETEXT는 뷰 내의 text, ntext 및 image 열에서 사용할 수 없습니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 큰 값 데이터 형식 및 UPDATE 문의 .WRITE 절을 사용하십시오.

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

구문

WRITETEXT { table.column text_ptr }
    [ WITH LOG ] { data }

인수

  • table**.**column
    업데이트할 테이블 및 text, ntext 또는 image 열의 이름입니다. 테이블 이름 및 열 이름은 식별자에 대한 규칙을 따라야 합니다. 필요에 따라 데이터베이스 이름이나 소유자 이름을 지정할 수 있습니다.

  • text_ptr
    text, ntext 또는 image 데이터에 대한 포인터를 저장하는 값입니다. text_ptr은 binary(16)입니다. 텍스트 포인터를 만들려면 text, ntext 또는 image 열에 대해 Null이 아닌 데이터를 사용하여 INSERT 또는 UPDATE 문을 실행하십시오.

  • WITH LOG
    SQL Server에서 무시됩니다. 로깅은 데이터베이스에 영향을 주는 복구 모델에 의해 결정됩니다.

  • data
    저장할 실제 text, ntext 또는 image 데이터입니다. data는 리터럴 또는 매개 변수일 수 있습니다. WRITETEXT와 함께 대화형으로 삽입할 수 있는 텍스트의 최대 길이는 text, ntext 및 image 데이터의 경우 약 120KB입니다.

주의

text, ntext 및 image 데이터를 바꾸는 데 WRITETEXT를 사용하고 text, ntext 및 image 데이터를 수정하는 데 UPDATETEXT를 사용하십시오. UPDATETEXT는 text, ntext 또는 image 열의 전체가 아닌 일부만 변경하므로 더 융통성이 있습니다.

최상의 성능을 위해 text, ntext 및 image 데이터를 8,040바이트의 배수가 되는 청크 크기로 삽입하거나 업데이트하는 것이 좋습니다.

데이터베이스 복구 모델이 단순 또는 대량 로그 복구 모델인 경우 새 데이터가 삽입 또는 추가되었을 때 WRITETEXT를 사용하는 text, ntext 및 image 작업은 최소 로그 작업입니다. 자세한 내용은 최소 로깅 가능한 작업을 참조하십시오.

[!참고]

기존 값이 업데이트되면 최소 로깅이 사용되지 않습니다.

WRITETEXT가 제대로 작동하려면 열에는 반드시 유효한 텍스트 포인터가 있어야 합니다.

테이블에 행 내부 텍스트가 없는 경우 SQL Server는 INSERT로 명시적 또는 암시적 Null 값이 text 열에 추가되고 이러한 Null 값에 대해 텍스트 포인터를 가져올 수 없을 때 text 열을 초기화하지 않음으로써 공백을 저장합니다. text 열을 NULL로 초기화하려면 UPDATE 문을 사용합니다. 테이블에 행 내부 텍스트가 있는 경우에는 text 열을 Null로 초기화할 필요 없이 항상 텍스트 포인터를 가져올 수 있습니다.

ODBC SQLPutData 함수는 WRITETEXT보다 빠르며 동적 메모리를 덜 사용합니다. 이 함수는 text, ntext 또는 image 데이터를 2GB까지 삽입할 수 있습니다.

SQL Server에서는 text, ntext 또는 image 데이터에 대한 행 내부 텍스트 포인터가 있을 수 있지만 유효하지 않습니다. text in row 옵션에 대한 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하십시오. 텍스트 포인터를 무효화하는 방법은 sp_invalidate_textptr(Transact-SQL)를 참조하십시오.

사용 권한

지정된 테이블에 대해 UPDATE 권한이 필요합니다. UPDATE 권한이 부여되면 이를 위임할 수 있습니다.

다음 예에서는 텍스트 포인터를 지역 변수인 @ptrval에 둔 다음 @ptrval이 지정한 행에 WRITETEXT로 새 텍스트 문자열을 넣습니다.

[!참고]

이 예를 실행하려면 pubs 예제 데이터베이스를 설치해야 합니다. pubs 예제 데이터베이스의 설치 방법은 Northwind 및 pubs 예제 데이터베이스 다운로드를 참조하십시오.

USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval binary(16);
SELECT @ptrval = TEXTPTR(pr_info) 
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id 
   AND p.pub_name = 'New Moon Books'
WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!';
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO