Sql server varchar(max)字段的updatetext等效值是什么?

Sql server varchar(max)字段的updatetext等效值是什么?,sql-server,text,sql-server-2012,varchar,clob,Sql Server,Text,Sql Server 2012,Varchar,Clob,我对文本(clob)字段使用了updatetext命令。 对于varchar(max)字段,最类似的是什么?您喜欢这样的东西吗 create table #t (f varchar(max) ) insert into #t values ('Xeiou') insert into #t values ('Xbcdefghijlmnopq') insert into #t values ('X') update #t set f = 'A' + SUBSTRING(f,2,len(f)-1

我对文本(clob)字段使用了
updatetext
命令。
对于
varchar(max)
字段,最类似的是什么?

您喜欢这样的东西吗

create table #t (f varchar(max) ) 

insert into #t values ('Xeiou')
insert into #t values ('Xbcdefghijlmnopq')
insert into #t values ('X')

update #t
set f = 'A' + SUBSTRING(f,2,len(f)-1)
where f is not null

select * from #t

drop table #t


f
----------------------
Aeiou
Abcdefghijlmnopq
A

我认为这是部分更新varchar字段的唯一方法。

您应该使用新的
。写入update子句的
部分。看

然而:

“。如果数据库恢复模型设置为“大容量日志记录”或“简单”,则插入或附加新数据的写入更新将以最小日志记录。更新现有值时不使用最小日志记录。”

…因此,我认为如果您实际替换数据,您不会减少事务日志大小

然而,根据研究,这与旧的
UPDATETEXT
方法完全相同。它们都被称为可以最少记录的操作,但在任何一种情况下,如果更新现有数据,都不会得到最少的记录:

  • 插入或追加新数据时,使用UPDATE语句中的.WRITE子句对大值数据类型进行部分更新。请注意,更新现有值时不使用最小日志记录。有关大值数据类型的详细信息,请参见数据类型(Transact-SQL)
  • 在text、ntext和image数据类型列中插入或追加新数据时使用WRITETEXT和UPDATETEXT语句。请注意,更新现有值时不使用最小日志记录

究竟为什么要将1GB的文本数据存储到一个字段中?到目前为止,您尝试了什么?可能的重复可以在更新之前将日志记录更改为SIMPLE,然后再将其更改回SIMPLE。UPDATETEXT命令的文档似乎没有指定它是否最小化日志记录。尽管这个.WRITE工具可能不符合OP的要求,+1,因为它对我来说是新的、很酷的东西。@TabAlleman以防您感兴趣,我找到了关于使用WRITE和WRITETEXT/UPDATETEXT最低限度记录的内容的文档,并更新了答案。我模模糊糊的回忆是对的:如果你正在改变现有的内容,在这两种情况下你都不会得到最少的日志记录。