In the spirit of having apps that do just one thing I have put a really small .net app on github that tries to create a connection to a SQL Server database and just keeps retrying until it is available:
https://github.com/GoEddie/WaitForSQL
What? Huh?
If you have a CI build and you start a new instance or database or azure db etc it can take different amounts of time to be available so this just sits trying until it can get a valid connection and you can continue your CI loveliness.
This can easily be replicated using powershell but it isn't always available.
To use it do something like:
-S server -E -T 600
or
-S server -U user -P password -T 600