We've recently deployed our first .Net 2 component (as part of an application which is written in Access VBA, VB and Delphi). It went smoothly on most sites, but at 2 installs we had an error "Timeout expired" which on investigation related to SQLClient. The rest of the system (the VBA, VB and delphi parts) could all connect to the database successfully, and yet the install had reported no problems.

We tried lots of ways to reproduce this problem, and failed. We created a test application to enable a developer to try a few things out on a client's site when they accompanied an engineer and waited for the opportunity to arise. A couple of weeks ago the issue happened again and this time a solution was found - I've no idea why this was thought of, but someone thought of checking the windows firewall on the server. The firewall was enabled but no SQL Server exceptions had been registerd. They added a SQL Server exception, and it all worked. So, today someone went out with one of our install engineers and successfully installed it on one of the sites where this had previously failed.

We've now updated our install to do the following:
NETSH FIREWALL SET PORTOPENING TCP 1433 SQL_SERVER ENABLE SUBNET
NETSH FIREWALL SET PORTOPENING UDP 1434 SQLBrowser ENABLE SUBNET