WRITETEXT (Transact-SQL)
允许对现有的 text、ntext 或 image 列执行最小日志记录的交互式更新。 WRITETEXT 将覆盖受其影响的列中的所有现有数据。 WRITETEXT 语句不能用于视图中的 text、ntext 和 image 列。
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用大值数据类型和 UPDATE 语句的 .WRITE 子句。 |
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
WRITETEXT [BULK]
{ table.column text_ptr }
[ WITH LOG ] { data }
参数
BULK
启用上载工具来上载二进制数据流。 该数据流必须由该工具在 TDS 协议级别提供。 在数据流不存在时,查询处理器将忽略 BULK 选项。重要提示 我们建议不要在基于 SQL Server 的应用程序中使用 BULK 选项。未来版本的 SQL Server 可能会更改或删除该选项。
table . column
要更新的表和 text、ntext 或 image 列的名称。 表和列的名称必须符合标识符规则。 指定数据库名和所有者名是可选的。text_ptr
存储指向 text、ntext 或 image 数据的指针的值。 text_ptr 必须是 binary(16)。若要创建文本指针,请对非空值的 text、ntext 或 image 列数据执行 INSERT 或 UPDATE 语句。WITH LOG
SQL Server 忽略此参数。 日志记录由数据库的当前恢复模式决定。data
要存储的实际 text、ntext 或 image 数据。 data 可以是文字或参数。 对于 text、ntext 和 image 数据,可以使用 WRITETEXT 以交互方式插入的最大文本长度约为 120 KB。
注释
请使用 WRITETEXT 替换 text、ntext 和 image 数据,并使用 UPDATETEXT 修改 text、ntext 和 image 数据。 UPDATETEXT 更加灵活,因为它只更改 text、ntext 或 image 列的一部分而非整个列。
为获得最佳性能,推荐以 8040 字节整数倍的块区大小,插入或更新 text、ntext 和 image 数据。
如果数据库为简单模式或大容量日志恢复模式,则在插入或追加新数据时,使用 WRITETEXT 语句的 text、ntext 和 image 操作将成为最小日志记录操作。
备注
在更新现有值时,不使用最小日志记录。
为了正确使用 WRITETEXT,列必须已经包含有效的文本指针。
如果该表没有行内文本,则在通过 INSERT 向 text 列中添加显式或隐式空值时,SQL Server 不初始化 text 列以节省空间,并且不能获取这类空值的文本指针。 若要将 text 列初始化为 NULL,请使用 UPDATE 语句。 如果表有行内文本,则不必为空值初始化文本列,而且始终可以获取文本指针。
ODBC SQLPutData 函数更快,且使用的动态内存比 WRITETEXT 少。 该函数可插入最多 2 GB 的 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