WRITETEXT (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Permet la mise à jour interactive, avec une journalisation minimale, d’une colonne de type text, ntext ou image existante. WRITETEXT remplace totalement les données existantes de la colonne qu'elle affecte. Vous ne pouvez pas utiliser WRITETEXT sur les colonnes text, ntext et image des affichages.

Important

Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt les types de données à valeur élevée et la clause .WRITE de l’instruction UPDATE.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

BULK
Permet aux outils de téléchargement de télécharger un flux de données binaires. Le flux de données doit être fourni par l'outil au niveau du protocole TDS. Lorsque le flux de données n'est pas présent, le processeur de requêtes ignore l'option BULK.

Important

Nous recommandons de ne pas utiliser l’option BULK dans les applications basées sur SQL Server. Cette option est susceptible d’être modifiée ou supprimée dans une future version de SQL Server.

table.column
Nom de la table et de la colonne text, ntext ou image à mettre à jour. Les noms de la table et de la colonne doivent suivre les règles applicables aux identificateurs. La spécification des noms de la base de données et du propriétaire est facultative.

text_ptr
Valeur qui stocke le pointeur des données text, ntext ou image. text_ptr doit être de type binary(16). Pour créer un pointeur de texte, exécutez une instruction INSERT ou UPDATE avec des données non NULL pour la colonne text, ntext ou image.

WITH LOG
Ignoré par SQL Server. L'enregistrement dans un journal est déterminé par le mode de récupération en vigueur dans la base de données.

data
Données text, ntext ou image à stocker. data peut être un littéral ou un paramètre. La longueur maximale du texte que vous pouvez insérer de manière interactive au moyen de WRITETEXT est d’environ 120 Ko pour les données text, ntext et image.

Notes

Utilisez WRITETEXT pour remplacer des données text, ntext et image, et UPDATETEXT pour modifier des données text, ntext et image. UPDATETEXT est plus souple, car il modifie uniquement une partie d’une colonne text, ntext ou image, au lieu de la colonne entière.

Pour obtenir des performances optimales, il est recommandé d’ajouter ou de mettre à jour les données text, ntext et image dans des tailles de bloc qui sont des multiples de 8040 octets.

Si le mode de récupération de base de données est le mode de récupération simple ou le mode de récupération utilisant les journaux de transactions, les opérations text, ntext et image qui utilisent WRITETEXT sont des opérations journalisées de façon minimale lorsque de nouvelles données sont insérées ou ajoutées.

Notes

La journalisation minimale n'est pas utilisée lors de la mise à jour de valeurs existantes.

Pour que l'instruction WRITETEXT fonctionne correctement, la colonne doit déjà contenir un pointeur de texte valide.

Si la table ne contient pas de texte dans les lignes, SQL Server économise de l’espace en n’initialisant pas les colonnes text quand des valeurs NULL explicites ou implicites sont ajoutées à des colonnes text à l’aide de l’instruction INSERT, et aucun pointeur de texte ne peut être obtenu pour ces valeurs NULL. Pour initialiser les colonnes text avec la valeur NULL, utilisez l’instruction UPDATE. Si la table contient du texte dans ses lignes, vous n'avez pas besoin d'initialiser la colonne text pour les valeurs NULL et vous pouvez toujours obtenir un pointeur de texte.

La fonction ODBC SQLPutData est plus rapide et utilise moins de mémoire dynamique que WRITETEXT. Cette fonction peut insérer jusqu’à deux gigaoctets de données text, ntext ou image.

Dans SQL Server, les pointeurs de texte dans la ligne vers les données text, ntext ou image sont possibles, mais ils peuvent ne pas être valides. Pour plus d’informations sur l’option text in row, consultez sp_tableoption (Transact-SQL). Pour plus d’informations sur l’invalidation des pointeurs de texte, consultez sp_invalidate_textptr (Transact-SQL).

Autorisations

Nécessite une autorisation UPDATE sur la table spécifiée. L'autorisation est transférable lorsque l'autorisation UPDATE est transférée.

Exemples

L'exemple suivant place le pointeur de texte dans la variable locale @ptrval, puis WRITETEXT place la nouvelle chaîne de texte dans la ligne sur laquelle pointe @ptrval.

Notes

Pour exécuter cet exemple, vous devez installer l'exemple de base de données 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  

Voir aussi

Types de données (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)
Instructions SET (Transact-SQL)
UPDATETEXT (Transact-SQL)