More efficient scripting for non-varchar/nvarchar extended properties
At the moment, extended properties that are varchar or nvarchar are scripted out by SQL Compare as literals ('value' or N'value'). Unfortunately every other data type is scripted out over three lines (plus a GO), declaring an @xp variable of the appropriate data type, SELECTing (not SETting) its value, and finally adding the property.
With heavy use of extended properties, or even mild use of non-(n)varchar properties, change scripts (and object scripts in SQL Source Control) can become huge pretty quickly. This causes various issues, not least of which is readability during peer review/PR approval.
I'd like to see this done much more efficiently if possible — for each unique combination of data type and value found in the extended properties, a variable is declared with that value (one line) and added to each property (one line per property).
The current use of literals for varchar and nvarchar could be preserved, and even extended to use literals for some of the simpler data types (int, money and varbinary would be really easy, though you'd need to use a currency symbol for money; float/real would be a bit more difficult, anything else would be overkill I think).
This would also mean that all of those unnecessary GO lines could be removed from between every single extended property (you could have one batch for constants and then one batch per data type/value combo, or just one batch for all properties if the variables were given unique names).
I just got a random table source control script from one of our repos, and it's a 21-column table. There are two custom bit extended properties on all of our tables, and the suggested changes (one batch for each data type and property) take this file from 201 lines down to 79 (more optimisation could be done by abstracting the redundant repeated identifier arguments passed to sp_addextendedproperty, but whether that would harm or improve readability is up for debate).