Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Timeout connessione Data Base.
mercoledì 25 novembre 2009 - 15.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
mer 25 nov 2009 - 15:11
Ciao a tutti,
sto sviluppando un applicazione in vb.net 2005. L'applicazione si collega ad un db sql sever 2005.
Ho il seguente problema:
1) Scollego il cavo di rete dal computer.
2) Avvio nel software un comando che comporta la connesione al DB.
3) l'oggetto "sqlclient" utilizzato per aprire la connessione impiega più di tre minuti per generare un'eccezzione. Come mai tutto questo tempo? Il timeout di default non dovrebbe essere 15 secondi?
La stessa situazione si verifica se nella stringa di connessione inserisco un server inesistene e lascio il cavo di rete collegato.
Un esempio del codice utilizzato è il seguente:
-----------------------------------------------------------------------------------------------------------
try
conn = New SqlClient.SqlConnection("Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=sa;Password=sa")
cmd = New SqlClient.SqlCommand
conn.Open()
cmd.Connection = conn
Dim SQLString As String
SQLString = "stringa sql"
cmd.CommandText = SQLString
dim rowsEffected As Integer = cmd.ExecuteNonQuery()
Catch ex As Exception
"gestione errore"
Finally
If Not IsNothing(cmd) Then cmd.Dispose()
If Not IsNothing(conn) Then
If conn.State = ConnectionState.Open Then conn.Close()
conn.Dispose()
End If
End Try
------------------------------------------------------------------------------------------------------------------------
Grazie.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 25 nov 2009 - 16:30
Mmm.....
Prima cosa che proverei a fare è forzare il timeout nella connection string ;Connection Timeout=15
Seconda cosa, ricorda che c'è un Connection Timeout e un Command Timeout. Se non ricordo male la connessione viene effettivamente aperta se c'è un comando lanciato e non vorrei che magari in quel caso parte anche il command timeout e si vada a sommare, che è in ogni caso di 30 secondi se non ricordo male (15 per la connessione come dicevi tu) quindi entrambi comunque minori di 3 minuti.
Prova a forzarli quindi e vediamo.
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
gio 26 nov 2009 - 08:59
Come posso impostare il "Command Timeout"? Il software si blocca e genera una eccezzone sulla riga "conn.open()". Non arriva alla riga in cui viene assegnato l'oggetto di tipo "SqlConnection" all'istanza del "SqlCommand".
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 26 nov 2009 - 13:43
>Come posso impostare il "Command Timeout"? Il software si blocca
>e genera una eccezzone sulla riga "conn.open()". Non arriva alla
>riga in cui viene assegnato l'oggetto di tipo "SqlConnection"
>all'istanza del "SqlCommand".
Dato che il problema ce l'hai durante il tentativo di apertura della connessione, dovresti provare ad impostare un valore esplicito per Connection Timeout (non Command Timeout).
Questa operazione puoi farla specificando il valore direttamente nella stringa di connessione oppure valorizzando l'omonima proprietà PRIMA di richiamare il metodo Open:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
gio 26 nov 2009 - 14:33
La propietà "connectionString" è di sola lettura, comunque il valore che imposto tramite la stringa di connessione, per esempio 5 secondi, viene restituita correttamente dalla propietà "connectionString". Anche impostando nella stringa di connessione il timeout a 5 secondi ottengo sempre lo stesso risultato, l'eccezione viene generata dopo 3 minuti circa.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 26 nov 2009 - 15:47
>La propietà "connectionString" è di sola lettura
Dal link indicato:
SqlConnection..::.ConnectionString Property
Gets or sets the string used to open a SQL Server database.
Come fa ad essere in sola lettura?
>Anche impostando nella stringa di connessione il timeout a 5
>secondi ottengo sempre lo stesso risultato, l'eccezione viene
>generata dopo 3 minuti circa.
Non ho altre idee.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
gio 26 nov 2009 - 17:06
Scusa ho sbagliato, la propietà in sola lettura è la "connectionTimeout".
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 26 nov 2009 - 21:58
>Scusa ho sbagliato, la propietà in sola lettura è la "connectionTimeout".
Si, vero ma:
Remarks
You can set the amount of time a connection waits to time out by using the ConnectTimeout or Connection Timeout keywords in the connection string.
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
ven 27 nov 2009 - 08:27
Si ho provato ad impostare il timeout nella stringa di connessione: "Data Source=server;Initial Catalog=nomeDB;Persist Security Info=True;User ID=sa;Password=sapwd;Connect Timeout=5".
Il risultato è sempre lo stesso.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 29 nov 2009 - 10:23
>"Data Source=server;Initial Catalog=nomeDB;Persist Security Info=True;User
>ID=sa;Password=sapwd;Connect Timeout=5".
>Il risultato è sempre lo stesso.
Ho notato che hai usato "Connect Timeout" invece di "Connection Timeout" nella connection string.
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
mayck
Profilo
| Newbie
15
messaggi | Data Invio:
ven 4 dic 2009 - 10:40
Ho provato con entrambe il risultato è lo stesso.
Grazie.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !