2017-10-17 13 views
0

J'ai programmé pendant quelques années, et nous avons une DLL par défaut utilisée pour l'accès aux données. Il semble qu'il y ait eu un peu de data-mining ou de scrappage de site dernièrement, et bien que nos connexions à la base de données SQL ne posent aucun problème, de nombreux programmes qui accèdent à l'as/400 gardent les connexions ouvertes et inactives pendant de longues périodes. temps. J'ai regardé à travers notre DLL d'accès aux données par défaut et le code ajouté pour fermer la connexion après chaque fonction, mais cela n'a pas aidé. J'ai peu d'expérience avec db2/as/400 ... comment fermer toutes ces connexions ouvertes/inactives à partir du code?Programme ne fermant pas les connexions à db2400/as/400

+0

Vous devez toujours utiliser 'using' lorsque vous travaillez avec des connexions de base de données. Ceci assurera la fermeture correcte des connexions et l'élimination des objets. Voir https://stackoverflow.com/questions/5243398/will-a-using-block-close-a-database-connection – VDWWD

+0

Nous utilisons using 'using' mais j'ai lu cela pourrait réellement faire partie de la question en traitant avec as/400 - est-ce possible? – deebs

Répondre

1

Si vous utilisez des pools de connexions, cela fonctionne comme prévu. Etes-vous sûr que la connexion est réellement ouverte? Comment déterminez-vous cela?

Si vous ne voyez que les verrous détenus par le travail QZDASOINIT sur IBM i, cela est également dû au design. Le système ferme les tables (curseurs) après la première utilisation. Lorsqu'il est utilisé à nouveau par le même travail, le système ne les ferme que de manière pseudo-fermée; afin de fournir une réponse plus rapide quand ils sont réutilisés.

Si une tentative d'accès exclusif est tentée, le système ferme le pseudo curseur fermé.

+0

Je crois que nous utilisons des pools de connexion. J'aimerais en faire un test - quelles en seraient les implications? – deebs

+1

@deebs, juste une dégradation des performances ... car les nouvelles connexions seront ouvertes/fermées à plusieurs reprises. – Charles