There is incorrect documentation on this page: http://msdn.microsoft.com/en-us/library/bb500305.aspx. Is there a process for getting it corrected?
That page states the following: "For the LOB data types varchar(max),nvarchar(max), varbinary(max),image, text, ntext, andxml, the old value will only appear in the update old row if the column actually changed during update. For other data types, the column value will always appear in both update rows."
However, this is incorrect. The correct information is given in a different page, http://msdn.microsoft.com/en-us/library/bb510627.aspx, which correctly states: "Columns of data typeimage, text, and ntext are always assigned a NULL value when__$operation = 1 or __$operation = 3. Columns of data typevarbinary(max), varchar(max), ornvarchar(max) are assigned a NULL value when __$operation = 3 unless the column changed during the update. When__$operation = 1, these columns are assigned their value at the time of the delete. Computed columns that are included in a capture instance always have a value of NULL."
So, the original documentation is right about the var*(max) types, but wrongly states that the values are preserved for image, text and ntext when the values are changed, when in fact those are always assigned NULL. And I wouldn't want to even speculate, given this contradictory documentation, on what the actual behavior is of xml-typed columns.
See also this question http://social.msdn.microsoft.com/Forums/en-SG/sqldatabaseengine/thread/0b6e9e25-24d7-48d0-b1e8-a9fd905082d3?prof=required which points out the correct docs (I commented about the incorrect ones there too).
How do we get the incorrect documentation corrected?