WRITETEXT (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Consente di eseguire l'aggiornamento interattivo con registrazione minima di una colonna di tipo text, ntext o image esistente. WRITETEXT sovrascrive completamente tutti i dati esistenti nella colonna interessata. Non è possibile usare WRITETEXT nelle colonne di tipo text, ntext e image di una vista.

Importante

Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, usare i tipi di dati per valori di grandi dimensioni e la clausola .WRITE dell'istruzione UPDATE.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

BULK
Consente agli strumenti di caricamento di caricare un flusso di dati binario. Il flusso deve essere fornito dallo strumento a livello di protocollo TDS. Se il flusso di dati non è presente, Query Processor ignora l'opzione BULK.

Importante

È consigliabile evitare di usare l'opzione BULK nelle applicazioni basate su SQL Server. Questa opzione potrebbe essere cambiata o rimossa in una versione futura di SQL Server.

table.column
Nome della tabella e della colonna di tipo text, ntext o image da aggiornare. I nomi delle tabelle e delle colonne devono essere conformi alle regole per gli identificatori. I nomi del database e del proprietario sono facoltativi.

text_ptr
Valore che contiene il puntatore nei dati di tipo text, ntext o image. text_ptr deve essere di tipo binary(16). Per creare un puntatore di testo, eseguire un'istruzione INSERT o UPDATE con dati non Null per la colonna di tipo text, ntext o image.

WITH LOG
Ignorato da SQL Server. La registrazione è definita dal modello di recupero attivo nel database.

data
Dati text, ntext o image effettivi da archiviare. data può essere un valore letterale o un parametro. La lunghezza massima consentita per il testo che è possibile inserire in modo interattivo tramite WRITETEXT è di circa 120 KB per i dati di tipo text, ntext e image.

Osservazioni:

Usare WRITETEXT per sostituire i dati di tipo text, ntext e image e UPDATETEXT per modificare i dati di tipo text, ntext e image. UPDATETEXT risulta più flessibile poiché modifica solo una parte della colonna di tipo text, ntext o image anziché l'intera colonna.

Per ottimizzare le prestazioni, è consigliabile inserire o aggiornare i dati di tipo text, ntext e image in blocchi con dimensioni multiple di 8040 byte.

Se il modello di recupero del database è di tipo semplice o con registrazione minima delle operazioni bulk, le operazioni sui dati di tipo text, ntext e image in cui viene usato WRITETEXT saranno operazioni con registrazione minima in caso di inserimento o aggiunta di nuovi dati.

Nota

La registrazione minima non viene utilizzata in caso di aggiornamento di valori esistenti.

Per consentire la corretta esecuzione di WRITETEXT, è necessario che la colonna includa un puntatore di testo valido.

Se la tabella non include testo all'interno delle righe, SQL Server riduce automaticamente la quantità di spazio usato evitando l'inizializzazione delle colonne di tipo text in corrispondenza dell'aggiunta di valori Null impliciti o espliciti nelle colonne di tipo text tramite l'istruzione INSERT. Per questi valori Null non è più possibile ottenere un puntatore di testo. Per inizializzare le colonne di tipo text per i valori NULL, usare l'istruzione UPDATE. Se la tabella include testo all'interno delle righe, non è necessario inizializzare la colonna di tipo text per i valori Null ed è sempre possibile ottenere un puntatore di testo.

La funzione ODBC SQLPutData risulta più rapida e usa una quantità inferiore di memoria dinamica rispetto a WRITETEXT. Questa funzione è in grado di inserire fino a 2 gigabyte di dati di tipo text, ntext o image.

In SQL Server è possibile che esistano, ma non siano validi, puntatori di testo all'interno di righe a dati di tipo text, ntext o image. Per informazioni sull'opzione text in row, vedere sp_tableoption (Transact-SQL). Per informazioni su come invalidare i puntatori di testo, vedere sp_invalidate_textptr (Transact-SQL).

Autorizzazioni

È richiesta l'autorizzazione UPDATE per la tabella specificata. L'autorizzazione è trasferibile in caso di trasferimento dell'autorizzazione UPDATE.

Esempi

Nell'esempio seguente il puntatore di testo viene inserito nella variabile locale @ptrval e quindi WRITETEXT inserisce la nuova stringa di testo nella riga indicata da @ptrval.

Nota

Per eseguire questo esempio, è necessario installare il database di esempio 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  

Vedi anche

Tipi di dati (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)
Istruzioni SET (Transact-SQL)
UPDATETEXT (Transact-SQL)