problème de délai d'attente pour procédure stockée - SQL/NoSQL - Programmation
Marsh Posté le 22-07-2005 à 12:29:21
a mmon avis , il faut optimiser tes tables avec des indexes, optimiser tes requetes, pour accelerer un peu tout ça.
la procedure stockee sera plus rapide en theorie.
Commandtimeout = 0 : temps iliimite...
Marsh Posté le 22-07-2005 à 14:35:48
Commandtimeout = 0
Ca je l'avais bien en tête, mais je ne sais pas où le mettre dans ma fonction, la compilation n'apprécie pas du tout que j'écrive ce genre de chose....
voici le view si quelqu'un sait où insérer la commande.
CREATE VIEW dbo.vwexportpro
AS
SELECT DISTINCT
TOP 100 PERCENT A.ANC_NOM AS Expr1, A.ANC_PRENOM AS Expr2, A.ANC_ECOLE AS Expr3, A.ANC_ID_ECOLE AS Expr4, D.*, C.PAYS AS Expr5,
F.PROMO AS Expr6
FROM dbo.ANC_ID A INNER JOIN
dbo.ANC_PRO_2 D ON A.ANC_ID = D.ANC_ID AND A.ANC_ECOLE = D.ANC_ECOLE INNER JOIN
dbo.ANC_PROMO F ON A.ANC_PROMO = F.ID_PROMO AND A.ANC_ECOLE = F.ID_ECOLE INNER JOIN
dbo.TB_PAYS C ON D.ANC_PRO_PAYS = C.ID_PAYS CROSS JOIN
dbo.TB_DEP G CROSS JOIN
dbo.ANC_ETAT_EMPLOI H
ORDER BY A.ANC_NOM
Marsh Posté le 22-07-2005 à 17:21:19
là où t'as ton :
Code :
|
Ben là, tu rajoutes "cmd.CommandTimeout = 0"
Sinon, le Server.ScriptTimeout empêche IIS d'aborder le chargement de la page ASP avant le délais spécifié en secondes.
Par défaut c'est 90 secondes.
Marsh Posté le 22-07-2005 à 17:45:31
Ok mais ca reste des choses à faire du coté de mon code ASP...
Ma procédure faisait déjà ça et fonctionne bien tant que je n'utilise pas de procédure stockée. Elle n'a visiblement plus aucun effet quand j'utilise des procédures stockées (je ne me l'explique pas, donc il est très possible que je sois en train de dire n'importe quoi...).
Bref à part si quelqu'un peut me dire comment paramétrer ca directement depuis ma requête de view ou bien de procédure stockée je vais devoir changer le réglage par défaut du serveur pour toutes les pages. Seulement j'aimerai avoir une autre solution sous la main pour faire un truc plus propre car on héberge pas mal d'activités dans le coin (puis je me vois mal annoncer au boss que j'ai du effectuer une telle opération pour un truc qui me semble très basique).
Bref je m'y pencherai après un week end de repos neuronal Merci pour votre aide
Marsh Posté le 22-07-2005 à 18:00:21
c'est pas au niveau de la requête qu'on change ça.
c'est au niveau de l'ASP, qui dit au serveur IIS d'attendre, et au drivers OLEDB de rester en ligne.
côté sql server, y'a rien à paramètrer, par défaut tu peux lancer une requête qui met 10 ans à s'executer, il va poireauter tout le temps nécessaire
Marsh Posté le 22-07-2005 à 18:01:11
tu peux ajouter aussi cnx.connectiontimeout pour dire non seulement à la commande de ne pas aborder, mais aussi à la connection de ne pas se fermer.
Marsh Posté le 22-07-2005 à 18:01:48
déjà, poste le message exect, il dit en toutes lettres généralement ce qui cloche, suffit de savoir le décrypter
sinon, dans ton code ASP, t'as en toutes lettres un truc avec un "EXEC" ? c'est quoi ce truc
passe par un objet COMMAND avec des paramètres et proprement.
tu devrais trouver des exemple en tappant ça dans google :
asp server.createobject("adodb.command" ) adProcCmd
Marsh Posté le 22-07-2005 à 12:25:50
Mon prob: Je fais des requetes depuis des pages ASP plutot lourdes (15 à 20 minutes) alors j'essaie de passer par des procédures stockeés et des views.
Seulement à présent que je passe par une procédure stockée qui fouille dans un view, ca plante à cause des délais. Je ne sais pas gérer les délais d'attente. J'ai essayé ca depuis ma page ASP qui fonctionnait avant.
Server.ScriptTimeOut = 50000000
EXEC sp_export_pro '6'
Je ne sais pas trop ce que fait cette procédure "Server.ScriptTimeOut" c'est un package utilisé par celui qui gérai le site avant moi et qui selon moi devrait bidouiller avec la fonction CommandTimeout. Maintenant que je la mette ou pas ma page plante systématiquement au bout d'une trentaine de seconde
Bon voici mes questions:
-passer par ces structures va-t-il réduire mes temps de requête au final?
-Qu'elles commandes mettre dans ma procédure stockée et/ou mon view pour régler ce de temps d'accès? (le code please car je commence tout juste à toucher le SQL...)
Merci par avance