WRITETEXT (Transact-SQL)
Ermöglicht die minimal protokollierte, interaktive Aktualisierung einer vorhandenen Spalte vom Datentyp 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 in Sichten verwendet werden.
Wichtig |
---|
Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen die Datentypen für umfangreiche Werte und die WRITE-Klausel der UPDATE-Anweisung. |
Syntax
WRITETEXT { table.column text_ptr }
[ WITH LOG ] { data }
Argumente
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 Typ binary(16) sein. Führen Sie zum Erstellen eines Textzeigers eine INSERT- oder UPDATE-Anweisung mit Daten ungleich NULL für die text-, ntext- oder image-Spalte aus.WITH LOG
Wird von SQL Server ignoriert. Die Protokollierung wird durch das für die Datenbank wirksame Wiederherstellungsmodell bestimmt.data
Die tatsächlichen zu speichernden Daten vom Datentyp text, ntext oder image. data kann ein Literal oder ein Parameter sein. text-, ntext- und image-Textdaten von maximal etwa 120 KB können interaktiv mit WRITETEXT eingefügt werden.
Hinweise
Verwenden Sie WRITETEXT, um text-, ntext- und image-Daten zu ersetzen, und UPDATETEXT, um text-, ntext- und image-Daten zu ändern. 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. Weitere Informationen finden Sie unter Vorgänge, für die eine minimale Protokollierung verfügbar ist.
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 Gigabytes an Daten vom Typ text, ntext oder image einfügen.
In SQL Server sind möglicherweise Textzeiger auf Daten vom Typ text, ntext oder image in Zeilen vorhanden, die jedoch ungültig sind. Informationen zur Option text in row finden Sie unter sp_tableoption (Transact-SQL). Informationen dazu, wie Textzeiger ungültig werden, 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 der lokalen Variablen @ptrval abgelegt. Anschließend platziert WRITETEXT die neue Textzeichenfolge in die Zeile, auf die @ptrval zeigt.
Hinweis |
---|
Um dieses Beispiel auszuführen, müssen Sie die pubs-Beispieldatenbank installieren. Informationen zum Installieren der pubs-Beispieldatenbank finden Sie unter Herunterladen der Beispieldatenbanken Northwind und 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