SQL timeouts can be very annoying, especially for internal development tools where performance isn't critical.
A lot of developers will try fixing this by modifying the connection string by appending "Connect Timeout=300". Normally this is easy because the connection string is stored in some config file.
However, it still usually fails. This is because there's a big difference between SqlConnection.ConnectionTimeout and SqlCommand.CommandTimeout.
If you're running a command, like a snippet of SQL or a stored proc, then your code needs to set the CommandTimeout. Something like so:
SqlConnection con = new SqlConnection(strDbCon);
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = strText;
cmd.CommandTimeout = 10000; //no relation to con.ConnectionTimeout
Obviously, that's very minimalist code, but that's the general idea. For a robust data access layer, you'd make the timeout configurable.