Newsgroup: it.comp.appl.access
Titolo: Timeout query pass through

Salve,
Ho un database mdb collegato via ODBC a sql server. 
Nel DB ho una semplice query pass through (di update) che di solito viene eseguita in meno di un secondo.. Però a volte va in timeout e quando succede lo fa anche ad ogni successiva esecuzione. 
Chiudendo Access e riaprendolo funziona tutto normalmente.
 
In passato avevo sostituito anche un'altra query con una query PT (di selezione) e quest'ultima veniva usata da più persone. Anche in questo caso a volte la query andava in timeout e il problema è stato riscontrato da tutti gli utenti contemporaneamente, quindi ho paura che il problema sia il server. 
In questo caso non ho fatto molti test, ma ho subito ripristinato la query classica. Sbaglio a pensare ad un problema lato server? Cosa posso fare per evitare quest'errore?
 
Grazie mille per ogni suggerimento

Premetto che non saprei a cosa possa essere dovuta questa "stranezza"... dando per scontato che il predicato SQL di cui parli sia scritto in modo da essere eseguito correttamente lato server... non sempre scontato ma puoi verificarlo con gli strumenti di managment del server.
A tal proposito per essere certi, magari pubblica il predicato completo, alcune volte capita di vedere predicati SQL con risoluzioni implicite non risolvibili dal server...
 
Hai pensato a provare, come test, a creare una STORED parametrica lato server wd eseguire la SP invece dla query UPDATE...?
Saluti
@Alex

Aggiungo se possono contribuire:
 
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2005/administrator/bb188204(v=sql.90)?redirectedfrom=MSDN
 
 
https://social.msdn.microsoft.com/Forums/office/en-US/b4521015-4ca1-4644-adea-bdbd0b8106c7/best-way-to-execute-sql-stored-procedure-with-parameters-from-access-2010?forum=accessdev
 
 
https://www.access-programmers.co.uk/forums/threads/calling-a-stored-procedure-and-passing-parameter.129352/
 
 
@Alex


Grazie Alex! 
La query è la seguente:
UPDATE dbo.Articoli SET dbo.Articoli.Finale1 = 1 FROM dbo.Articoli INNER JOIN ( 
   SELECT dbo.Artform.Cd_AR, dbo.Artform.Cd_AR1 FROM dbo.Artform WHERE ((dbo.Artform.Cd_AR1)='" & Me.Ricerca & "') 
   ) AS formula ON dbo.Articoli.Cd_AR = formula.Cd_AR


Ho scritto la stored procedure con un parametro su sql server e tutto funziona bene lì.
Adesso però non riesco a lanciarla da Access.
Ho provato questi due comandi
- Docmd.Runsql "EXEC SPCercaUSO 'stringa'"
- CurrentDB.Execute "EXEC SPCercaUSO 'stringa'"
L'errore visualizzato è tipo "instruzione sql non valida. Prevista 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' O 'UPDATE'"
Ho provato anche a creare una query PT e lanciare lo stesso comando. In questo caso l'errore visualizzato è
"the execute permission was denied on the object SPCercaUSO"

La query Update è sicuramente ben scritta ed il parametro essendo risolto in modo esplicito non dovrebbe dare problemi... quindi fatico a trovare la ragione della segnalazione.
 
Per la SP io la chiamerei da qurey pass-trough...
 
Dim qdef As DAO.QueryDef
Set qdef = CurrentDb.CreateQueryDef("")
qdef.Connect = "tua connection string"
qdef.SQL = "EXEC sp_NomeSP 'PARAM1'"
qdef.ReturnsRecords = False 
qdef.Execute
 
Ciao
@Alex


non va... ODBC chiamata non riuscita
come stringa ho copiato la stringa che uso per le query PT.

C'è sicuramente qualche cosa che ti sfugge...
 
Crea una banale sp di delete senza parametri e vedi cosa succede...
 
Last chance, alternativa:
 
CurrentProject.Connection.Execute "EXEC sp_tuastored"
 
Poi mi fermo ma deve essere una cosa abbastanza banale che probabilmente sfugge.
 
@Alex


grazie mille.. ci sbatterò un po' la testa da solo e vediamo che succede ;-)