The docs say this, but I didn't guess from the API that the CommandTimeout property on a Connection does not actually apply to commands. It only applies to opening the connection. To set the timeout for commands, use the CommandTimeout on the Command object itself (i.e. commands do not inherit connections' timeout settings).