По словам Кален Делани, в своей книге Внутри Microsoft SQL Server 2005: механизм хранения , SQL Server 2005 (а теперь и 2008) может обновлять строку с помощью вставки / удаления или по месту просто изменив значение одного столбца. Вот краткое изложение того, что она говорит на с. 306-311 из книги.
Обычное поведение в SQL Server 2005/2008 - обновление строки на месте. Строка остается в том же месте на странице, и изменяются только затронутые байты. Примером этого может быть обновление значения в целочисленном столбце, который не является частью очищенного индекса.
Строка может обновляться с помощью вставки / удаления, когда ее размер изменяется, и она больше не помещается на исходной странице. Это может произойти, если вы измените значение в столбце varchar и увеличите его. Это также происходит, когда столбец кластеризованного индекса изменяется, и строка должна перемещаться из-за своей позиции в индексе (поскольку строки упорядочены по кластерному ключу). Примером этого может быть изменение чьей-либо фамилии с «Смит» на «Джонс» в таблице с кластеризованным индексом по фамилии.