In the past I have dropped json into a table in a nvarchar(Max) column.
This is structured data but it needed serving back to the client as json and came in from the client as json so it seemed a bit of a waste of time to map it out to a table and then recombine it again.
However doing this made me a little uneasy as you can't manipulate nvarchar(Max) columns in sql and lets face it sql is really poor at manipulating strings anyway.
Our database versioning process is entirely based around creating scripts to be run by sqlcmd. This would make it impossible to refactor the data structure (using sql) in the future, which isn't a good state to be in.
So the question is this: Is there anyway of shelling out of sqlcmd to run arbitrary programs? This would want to be something synchronous, so the normal flow of patches could resume after the other program was called. This would allow you write programs in languages more suited to manipulating strings.