WRITETEXT (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Ermöglicht das minimal protokollierte, interaktive Aktualisieren einer vorhandenen Spalte vom Typ text, ntext oder image. WRITETEXT überschreibt alle vorhandenen Daten in der betreffenden Spalte. WRITETEXT kann nicht für Spalten vom Datentyp text, ntext und image und in Sichten verwendet werden.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen die Datentypen für große Werte und die .WRITE-Klausel der UPDATE-Anweisung.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

BULK
Aktiviert Uploadtools, um einen Binärdaten-Datenstrom hochzuladen. Der Datenstrom muss vom Tool auf TDS-Protokollebene bereitgestellt werden. Wenn der Datenstrom nicht vorhanden ist, ignoriert der Abfrageprozessor die BULK-Option.

Wichtig

Es wird empfohlen, die BULK-Option nicht in SQL Server-basierten Anwendungen zu verwenden. Diese Option kann in einer zukünftigen Version von SQL Server geändert oder entfernt werden.

table.column
Der Name der zu aktualisierenden Tabelle oder der zu aktualisierenden Spalte vom Datentyp text, ntext oder image. Tabellen- und Spaltennamen müssen den Regeln für Bezeichner entsprechen. Das Angeben des Datenbank- und des Besitzernamens ist optional.

text_ptr
Ein Wert, in dem der Zeiger auf die Daten vom Typ text, ntext oder image gespeichert wird. text_ptr muss vom Datentyp binary(16) sein. Führen Sie zum Erstellen eines Textzeigers eine INSERT- oder eine UPDATE-Anweisung für die Spalte text, ntext oder image mit Daten aus, die nicht NULL ist.

WITH LOG
Wird von SQL Server ignoriert. Die Protokollierung wird durch das für die Datenbank wirksame Wiederherstellungsmodell bestimmt.

data
Die tatsächlichen Daten vom Typ text, ntext oder image, die gespeichert werden sollen. data kann ein Literal oder ein Parameter sein. Die maximale Textlänge, die interaktiv mit WRITETEXT eingefügt werden kann, entspricht für Daten vom Typ text, ntext und image ungefähr 120 KB.

Hinweise

Verwenden Sie WRITETEXT zum Ändern von Daten vom Typ text, ntext und image und UPDATETEXT zum Ändern von Daten vom Typ text, ntext und image. UPDATETEXT ist flexibler, weil damit nicht die gesamte Spalte, sondern nur ein Teil einer text-, ntext- oder image-Spalte geändert wird.

Für eine optimale Leistung empfiehlt es sich, Daten vom Typ text, ntext und image in Segmenten mit der Größe eines Vielfachen von 8040 Bytes einzufügen oder zu aktualisieren.

Wenn Sie das einfache oder massenprotokollierte Wiederherstellungsmodell verwenden, sind Vorgänge vom Typ text, ntext und image, die WRITETEXT verwenden, minimal protokollierte Vorgänge, wenn neue Daten eingefügt oder angefügt werden.

Hinweis

Die minimale Protokollierung wird nicht verwendet, wenn vorhandene Werte aktualisiert werden.

Die Spalte muss bereits einen gültigen Textzeiger enthalten, damit WRITETEXT ordnungsgemäß ausgeführt wird.

Wenn die Tabelle keinen Text in Zeilen enthält, spart SQL Server Speicherplatz, indem Spalten vom Datentyp text nicht initialisiert werden, wenn in Spalten vom Datentyp text explizite oder implizite NULL-Werte mit INSERT hinzugefügt werden. Für diese NULL-Werte kann kein Textzeiger erhalten werden. Verwenden Sie die UPDATE-Anweisung, um Spalten vom Datentyp text für NULL-Werte zu initialisieren. Wenn die Tabelle über Text in Zeilen verfügt, muss die text-Spalte nicht für NULL-Werte initialisiert werden, und Sie können immer einen Textzeiger erhalten.

Die ODBC-Funktion SQLPutData ist schneller und verwendet weniger dynamischen Arbeitsspeicher als WRITETEXT. Diese Funktion kann bis zu 2 GB an Daten vom Typ text, ntext oder image einfügen.

In SQL Server können Textzeiger auf text-, ntext- oder image-Daten in Zeilen zwar vorhanden sein, sie sind aber möglicherweise ungültig. Informationen zur Option „text in row“ finden Sie unter sp_tableoption (Transact-SQL). Informationen dazu, wie Textzeiger ungültig gemacht werden können, finden Sie unter sp_invalidate_textptr (Transact-SQL).

Berechtigungen

Erfordert die UPDATE-Berechtigung für die angegebene Tabelle. Die Berechtigung ist übertragbar, wenn die UPDATE-Berechtigung übertragen wird.

Beispiele

Im folgenden Beispiel wird der Textzeiger in die lokale Variable @ptrval eingefügt. Anschließend wird die neue Textzeichenfolge von WRITETEXT in die Zeile eingefügt, auf die @ptrval zeigt.

Hinweis

Um dieses Beispiel auszuführen, müssen Sie die pubs-Beispieldatenbank installieren.

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  

Weitere Informationen

Datentypen (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)
SET-Anweisungen (Transact-SQL)
UPDATETEXT (Transact-SQL)