I want to make a database connection to my SQL Server fail fast. How can I decrease the timeout? I've tried adding Connection Timeout=1
in my connection string, however this doesn't seem to make a difference.
With Connection Timeout=500
, it takes about 8 min 30 seconds to timeout. This is expected. With Connection Timeout=1
, it takes around 40 seconds to timeout which is way longer than expected.
I found the EntityConnection.ConnectionTimeout
property but it is read only. Is there anything else I can do to decrease this timeout? Is this an issue with Entity?
UPDATE: Here is my connect string. It still takes ~40 seconds to timeout.
<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string="data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1"" providerName="System.Data.EntityClient" />
UPDATE 2: So I discovered that the timeout was a tcp timeout, not a sql connect timeout. If my machine were able to reach the host, @marc_s solution would have worked, however, since I cannot reach that host, the tcp timeout comes into play. Does anyone know how to decrease the tcp timeout for a SqlConnection
?
Where and how did you specify that connection timeout?
I just tried and added this to my EF connection string (using EF database-first) - and it works as expected: with SQL Server service stopped, the connection attempts time out almost immediately....
<add name="myEntities"
connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient;
provider connection string="data source=.;initial catalog=mydb;
integrated security=True;connect timeout=1;multipleactiveresultsets=True;
*****************
App=EntityFramework""
providerName="System.Data.EntityClient" />
(EF connection string broken up and wrapped for clarity - this will be just one long line in your web.config
)
You need to add connect timeout=x
(where x
is in seconds, any value bigger than 0 is ok) inside the provider connection string=
value of your EF connection string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With