WRITETEXT(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

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

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신에 대형 값 데이터 형식 및 UPDATE 문구의 .WRITE 절을 사용합니다.

Transact-SQL 구문 표기 규칙

Syntax

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

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

BULK
이진 데이터 스트림을 업로드하기 위해 업로드 도구를 사용합니다. 스트림은 도구가 TDS 프로토콜 수준에서 제공해야 합니다. 데이터 스트림이 없으면 쿼리 프로세서는 BULK 옵션을 무시합니다.

중요

BULK 옵션은 SQL Server 기반 애플리케이션에서 사용하지 않는 것이 좋습니다. 이 옵션은 SQL Server 다음 버전에서 변경 또는 제거될 수 있습니다.

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

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

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

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

설명

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

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

데이터베이스 복구 모델이 단순 또는 대량 로그 복구 모델인 경우 새 데이터가 삽입 또는 추가되었을 때 WRITETEXT를 사용하는 text, ntextimage 작업은 최소 로그 작업입니다.

참고

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

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에 둔 다음 WRITETEXT이 지정한 행에 @ptrval로 새 텍스트 문자열을 넣습니다.

참고

이 예를 실행하려면 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  

참고 항목

데이터 형식(Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT(Transact-SQL)
SET 문(Transact-SQL)
UPDATETEXT(Transact-SQL)