• Avatar of goldenratio
  • now das fresh
  • PipPipPipPipPipPipPipPipPipPip
  • Group: Member
  • Joined: Jun 27, 2002
  • Posts: 4550
So I am on the hunt for a good, free diff tool. It doesn't have to be free, since I am looking for both personal reasons and also for my company. A free or open-source one would be awesome, obviously, but they can also cost money, since my company is going to buy it. I have already dug around SourceForge for quite a bit and haven't found anything that did what I needed it to.

I've found two good, but rather expensive products. One is ApexSQL Diff, which does exactly what I want (script structural changes), plus I think it is fairly robust and can sync data too (which is good). Sort of expensive, though.

The other is Red-Gate SQL Compare. This one is good as well. The scripts aren't as pretty or as good as the ApexSQL ones, but the SQLToolbelt (which I downloaded the demo of and am using on my home station right now) has some pretty sweet stuff, especially the SQLPrompt, which provides really nice intellisense which is something that SSMS/Query Analyzer should fucking have anyway.

I really wanted to find an open-source one, though, because jesus I can't believe nobody has really made any of these. It seems like the perfect candidate for open-source, too, because its a fairly simple problem with a fairly "obvious" solution so I am actually considering developing an open-source one of my own christ. So anyways just wondering if anyone has even fucking heard of Diff tools and if so, if you know of any others (free or not).

These are MSSQL2k databases, basically. It needs to script database structure changes, not just show them (I found a few OS ones that would show you the changes but not script them in any way).

[story time you can skip the rest]

Also if you are a developer and use databases, diff tools are very useful. Ideally when developing software you would mature database schema before pushing any product live, but realistically your schema will change over time. Sometimes if you are just adding a column+FK, renaming something, adding a lookup/pairing table, it's not a big deal. Just make the change on your dev server, then go right over to your live server and do the same thing. Sometimes, though, your changes are more drastic. A project I'm working on now, I inherited when it was about 75%-80% done, and about that much of the database was designed as well. Not only that, but because a very crucial section of the database was not designed fully, I ended up with this 2 or 3 month process where I'd make massive changes to the database schema, mount my new DB alongside my old DB on the live server, truncate my new database, then run my scripts to migrate all the data, and switch them around and then be good. That fucking sucks and is probably more of a common practice than most people would like to admit, but yeah the 4 or 5 hours I spent coming up with migrate scripts was actually easier than keeping records of all the changes I'd made, then going one by one and making them on the live DB. Man you guys I am so high sorry but I just rambled for hella long without any real point but I'm gonna leave it.
yes coulombs are "germaine", did you learn that word at talk like a dick school?