WRITETEXT (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Обеспечивает интерактивное обновление существующего столбца типа text, ntext или image с минимальным ведением журнала. Инструкция WRITETEXT перезаписывает любые существующие данные в столбце, для которого применяется. Инструкцию WRITETEXT нельзя использовать для столбцов типа text, ntext и image в представлениях.

Внимание

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Используйте типы данных с большим значением и . Вместо этого в утверждении WRITEUPDATE (WRITE).

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

BULK
Включает внешние средства для передачи потока двоичных данных. Поток должен быть передан средством на уровне протокола TDS. В отсутствие потока данных обработчик запросов не учитывает параметр BULK.

Внимание

Рекомендуется не использовать параметр BULK в приложениях с поддержкой SQL Server. Этот параметр может быть изменен или удален в следующих версиях SQL Server.

таблица.столбец
Имя обновляемой таблицы и столбца типа text, ntext или image. Имена таблиц и столбцов должны соответствовать правилам для идентификаторов. Указание имени базы данных и владельца необязательно.

text_ptr
Значение, в котором хранится указатель на данные типа text, ntext или image. text_ptr должен быть бинарным(16). Чтобы создать указатель на текст, выполните INSERT оператор или UPDATE с данными, которые не являются null для столбца текста, ntext или изображения .

С LOG
Игнорируется SQL Server. Ведение журнала определяется моделью восстановления, действующей для базы данных.

data
Представляет собой фактические данные text, ntext или text для хранения. Аргумент data может быть литералом или параметром. Максимальная длина текста, который можно вставить интерактивно с помощью инструкции WRITETEXT — приблизительно 120 КБ для данных типа text, ntext и image.

Замечания

Используйте WRITETEXT для замены данных типа text, ntext и image и UPDATETEXT для изменения данных типа text, ntext и image. Инструкция UPDATETEXT более гибкая, так как изменяет не весь столбец типа text, ntext или image, а только его часть.

Для достижения оптимальной производительности рекомендуется вставлять или обновлять данные типа text, ntext и image фрагментами, размер которых кратен 8040 байтам.

Если модель восстановления базы данных простая или с неполным протоколированием, операции над данными типа text, ntext и image, в которых используется инструкция WRITETEXT, выполняются с минимальным ведением журнала при вставке или добавлении новых данных.

Примечание.

Если обновляются существующие значения, ведение журнала не сокращается до минимума.

Для правильного выполнения инструкции WRITETEXT столбец уже должен содержать действительный указатель на текст.

Если в таблице нет текста в строке, SQL Server экономит место, не инициализируя текстовые столбцы, когда явные или неявные нулевые значения добавляются в текстовых столбцах с INSERT, и для таких нулей не может быть получен указатель текста. Для инициализации текстовых столбцов в NULL используйте оператор.UPDATE Если в строке таблицы содержится текст, не нужно заполнять столбцы типа text значениями NULL и всегда можно получить указатель на текст.

Функция ODBC SQLPutData выполняется быстрее и занимает меньше динамической памяти, чем инструкция WRITETEXT. С помощью этой функции можно вставить до 2 гигабайт (ГБ) данных типа text, ntext или image.

В 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)
ОБНОВИТЬТЕКСТ (Transact-SQL)