Kevin Boyle

Trying to build products people love using interesting technologies

Open Sourcing SQL Scripts

Working at Red Gate has many perks— obligatory we’re hiring plug— but my favourite is Down Tools Week, when everyone stops working on their normal stuff for a week and follows their curiosity. It’s a good chance to scratch a few itches: everything from fixing some bug that never gets prioritized to building a remote-controlled robot that crowdsources its movements over the internet.

In the last Down Tools Week, I worked with a group of developers, designers and product managers to build a Management Studio extension that makes it easy to consume and share useful SQL snippets. It’s called SQL Scripts, and it’s backed by a repository of scripts on SQLServerCentral which already has thousands of scripts to help SQL developers and DBAs.

Apart from building a useful tool— feedback has been very positive so far, and people seem to be getting value from it —we also wanted to test technologies and methods relatively new to Red Gate before we added them to our established commercial products. We used lots of new technologies including CEF, OWIN and AngularJS to build a desktop product completely using web technologies, but still keep the tight Microsoft shell integration that users expect from us.

Looking at what we managed to build in one week, we’re pretty happy. The code is well designed considering the time constraint, and shows off some great techniques, like using CEF and Red Gate’s SSMS Integration Framework. We also had the luxury of building on great open-source projects like JSON.NET, log4net, AngularJS, Ninject, and a hundred other NuGet and npm modules, so it’s pretty polished.

We thought SQL Scripts might prove a useful example for anyone who wants to build a Management Studio extension or even a “normal” desktop app using web technologies. I’m delighted to say we’re open-sourcing the entire codebase on GitHub under the Apache licence. Hopefully, some of the code and techniques that we used will be useful in your own software. As always, pull requests are welcome. :)