Nope – still nothing. Now I’ll force a versioning operation and we should see the tags. Any update to the table should cause versioned records to be created. In this case, I’ll start an explicit transaction and do some updates and we should be able to see the original values using another query window. First the updates:

BEGIN

TRAN;GO

UPDATE

SmallTable SET c1 = 4;GO

And in another window:

SELECT

*FROM smalltable;GO

c1 c2———– ———–1 12 2

(2 row(s) affected)

Cool – so the original values are still there. Let’s see the versioning info on the data page (output snipped again):

I’ve marked the versioning parts in bold. Notice that the old records have been turned into ghost records too. The second record is now tagged as having variable-length columns too. This is because I updated both records to have the same clustering key value and so the second record now needs a uniquifier – which is stored as a variable-length column.

So, the original statement is a myth – the only time that rows get versioning info added to them is when it’s needed to support a versioning operation.