小编dyl*_*anT的帖子

SQL 更改跟踪不跟踪多记录更新

我在一个大约有 300 万行的表上打开了 SQL Server 更改跟踪。

开启变更追踪:

ALTER DATABASE FooDB
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 10 DAYS, AUTO_CLEANUP = OFF)

ALTER TABLE [dbo].[fooTable]
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = OFF)
Run Code Online (Sandbox Code Playgroud)

如果我单独编辑行,一切都很好,每个插入/更新/删除都会存储一个更改。

如果我运行更新多行的更新查询,我只会在更新中获得第二行的更改记录。

所以:

UPDATE fooTable SET name = UPPER(name) where id between 100 and 200
Run Code Online (Sandbox Code Playgroud)

其次是(以确保对每一行进行实际更新)

UPDATE fooTable SET name = LOWER(name) where id between 100 and 200
Run Code Online (Sandbox Code Playgroud)

仅生成记录 101 的更改记录。

SQL Express 2014

sql-server change-tracking sql-server-2014

6
推荐指数
1
解决办法
1632
查看次数