Phil Factor combines a couple SQL Server features to track database deployment history:
We maintain the current record where it is easy to get to and simply add an array to hold the history information. Our only headache is that we can only hold an NVARCHAR of 3750 characters (7500 of varchar characters) because extended properties are held as SQL_Variants. They need careful handling! This means that if our JSON data is larger, we have to trim off array elements that make the JSON exceed that number.
The combination of JSON and extended properties is not one that I’ve seen before—typically, there’s a deployment log table.