• In that example, I have tried to show that once fixed length data type size is reduced, it only changes meta data but continues to use orginal fixed length size. Once the meta data has changed then it implicitly means that now you are only allowed to insert the data that can fit in to new data type range. That is one of many reasons why meta data is there for 🙂 .

    So in simple terms all it means is when an int changes to smallint the data pages continue to use 4 bytes but now you are "only allowed to insert data that can fit just smallint range" (so effectively you are not using 2 bytes out of that 4 bytes). The field no longer hold int values. That was whole point of examining data rows that it conforms to new data type and only new data type will be allowed for further inserts.

    The point being highlighted here is that if storage space matters a lot to you and you are shortening the data type of fixed length column then storage space will not be claimed until you rebuild clustered index. The only thing that changes is now your data type range is according to new column of smaller size data type(in this example now data type range is smallint and not int).

    Hope it makes it clearer now