PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 01/09/2012 03:04:14

nexeg
Membre

ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Bonjour,

J'utilise 1 grosse application développée depuis des années sous ACCESS (DAO).
J'ai migré 1 partie de ma base de données sous PostgreSQL...
Au fur et à mesure de l'utilisation de mon programme et peut-être de l'adaptation de quelques structures de champs, ma base s'est peu à peu bloquée :
- Verrouillage de requêtes en lecture seule
- Enregistrements dans des tables verrouillées par des réservations (inexistantes) de la part d'autres utilisateurs...

Actuellement, mon application est à 2 doigts de s'écrouler du fait des verrous que je rencontre...

Je me demande donc si ma base est correctement déclarée lors e l'attachement de mes tables via ma connexion ODBC, ou elle le serait de manière incomplète avec ACCESS...
Sinon, à quel stade puis-je intervenir pour débloquer ces lignes, et faire en sorte que des requêtes, qui fonctionnaient parfaitement avec MySQL ou SQL Serveur, fonctionnent normalement avec PostgreSQL...

J'ai besoin d'1 éclairage rapidement...
Je souhaite m'appuyer sur PostgreSQL à l'avenir, qui est rapide et dont tout le monde semble enchanté...

Merci par avance

Hors ligne

#2 01/09/2012 10:15:05

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Complément :
Des requêtes de ce type, simples, qui fonctionnaient même avec MySQL, se retrouvernt en lecture seule à présent...
----------------------------------------------------------------------------------------------------------------------------------
SELECT DISTINCT ComptaBolero_Mvts.nummvt, ComptaBolero_Mvts.codeanalbudg, ComptaBolero_Mvts.codejournal, ComptaBolero_Mvts.dateecriture, ComptaBolero_Mvts.libelle, ComptaBolero_Mvts.datetransfert, ComptaBolero_Mvts.ecritureattente, dossiers.ndos, dossiers.dossier
FROM (ComptaBolero_Mvts INNER JOIN rq_EcrComptable_MVTS ON ComptaBolero_Mvts.nummvt = rq_EcrComptable_MVTS.ecr_nummvt) INNER JOIN dossiers ON ComptaBolero_Mvts.codeanalbudg = dossiers.ndos
WHERE (((ComptaBolero_Mvts.codeanalbudg) Like "*") AND ((ComptaBolero_Mvts.datetransfert) Is Null))
ORDER BY ComptaBolero_Mvts.nummvt DESC;
---------------------------------------------------------

Il s'agit d'1 requête que j'appelle ensuite pour compléter les champs :
ComptaBolero_Mvts.datetransfert et ComptaBolero_Mvts.ecritureattente

Tout est verrouillé désormais...

Mon problème viendrait il des paramètres d'attachement de la table en question ?
1 base de données du type de celle de PostgreSQL permet de prendre 1 bonne dimension, sans être prisonnier d'1 solution TOUT Microsoft... Avec SQL Server, ce type d'anomalie ne se produit pas...
Le verrouillage de ma requête ne se faisait pas non plus avec MySQL...

Dernière modification par nexeg (01/09/2012 10:19:11)

Hors ligne

#3 01/09/2012 10:22:26

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Ai-je positionné ma demande au bon endroit ODBC, car il n'y pas de rubriques concernant spécifiquement ACCESS ?

J'ai choisi ODBC parce que je me dis que je dois rencontrer 1 problème lié à l'attachement de mes tables à mon programme...

Hors ligne

#4 01/09/2012 13:04:52

rjuju
Administrateur

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Bonjour,

difficile de répondre sans plus de détails. C'est tout de même assez étonnant car le principe du moteur postgres fait qu'il y a normalement peu de verrous. Les problèmes de verrouillage sont ils constant ou ponctuels ? Si vous avez plus d'informations sur la volumétrie de la base, le nombre d'utilisateurs connectés, la version de postgresql, la version des drivers odbc ...

Pour avoir plus de détails sur les verrous en cours, pouvez vous dire ce que renvoie cette requête :


select * from pg_stat_activity a join pg_locks l on a.procpid = l.pid

Dernière modification par rjuju (01/09/2012 13:21:31)

En ligne

#5 01/09/2012 13:40:14

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Merci de votre réponse. 1 première pierre enfin...
Je crois à fond que PostgreSQL est l'alternative dont nous avons besoin, pour ce projet et bien d'autres que nous avons en cours de réalisation...

Mon programme fonctionne d'abord dans 1 environnement Windows 2003 serveur.
Nous allons migrer sous peu, sur 1 nouveau serveur de type Windows v2008

PostgreSQL fonctionne sous Ubuntu 12.04 LTS 64 bits

La version de PostgreSQL est la v9.1 en 32 bits

La version du connecteur ODBC :
PostgreSQL UNICODE    9.01.02.00    PSQLODBC35W.DLL    20/08/2012

Le résultat de votre requête :
http://pastebin.com/aMc0FqnU

Merci de votre concours

Dernière modification par nexeg (01/09/2012 13:41:14)

Hors ligne

#6 01/09/2012 13:44:27

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Mon fichier de connexion DSN :
-----------------------------------
[ODBC]
DRIVER=PostgreSQL Unicode
Uid=xxxxx
PORT=5432
DATABASE=xxxxx
SERVER=192.168.0.120
XaOpt=1
LowerCaseIdentifier=0
UseServerSidePrepare=0
ByteaAsLongVarBinary=0
BI=0
TrueIsMinus1=1
DisallowPremature=0
UpdatableCursors=0
LFConversion=1
ExtraSysTablePrefixes=dd_
CancelAsFreeStmt=0
Parse=0
BoolsAsChar=0
UnknownsAsLongVarchar=0
TextAsLongVarchar=1
UseDeclareFetch=0
Ksqo=1
Optimizer=1
CommLog=0
Debug=0
MaxLongVarcharSize=8190
MaxVarcharSize=255
UnknownSizes=0
Socket=4096
Fetch=1024
ConnSettings=
ShowSystemTables=0
RowVersioning=0
ShowOidColumn=0
FakeOidIndex=0
Protocol=7.4-1
ReadOnly=0
SSLmode=disable

Dernière modification par nexeg (01/09/2012 13:45:35)

Hors ligne

#7 01/09/2012 14:00:49

rjuju
Administrateur

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

D'après le résultat de la requête, il n'y a aucune activité sur le serveur à part la requête que vous avez lancé. Il faudrait avoir le résultat de cette requête lorsque le problème est présent pour savoir ce qui bloque.

Pour l'odbc, je ne connais pas plus que ça. Je remarque cependant que "Protocol" vaut 7.4-1, vous pourriez essayer avec 9.0 ou 9.1 si cela améliore les choses.

En ligne

#8 01/09/2012 14:12:27

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

J'ai donc exécuté ma requête qui passe en mode verrouillé...
Voici mle résultat...
http://pastebin.com/R5BykGUB

Dernière modification par nexeg (01/09/2012 14:13:51)

Hors ligne

#9 01/09/2012 14:19:39

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Le protocol ne peut pas aller au delà de la v7

939695Capture.jpg

Hors ligne

#10 01/09/2012 15:49:37

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Blocage à l'entrée d'1 formulaire...
Exécution de votre requête systeme :
http://pastebin.com/gsS3L4ku

Hors ligne

#11 01/09/2012 18:09:14

rjuju
Administrateur

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Cela ne remonte toujours pas de requête bloquée. Il faut la lancer durant le blocage car cela ne prend en compte que l'activité au moment de l'exécution.

Essayez :

select * from pg_stat_activity a join pg_locks l on a.procpid = l.pid where procpid <> pg_backend_pid();


pour n'afficher que les requêtes et verrous autre que ceux liés à la requête en cours, lorsque des requêtes sont bloquées

En ligne

#12 01/09/2012 18:15:53

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

J'ai pu avancer dans mes blocages... Figurez-vous que j'utilisais FLOAT8 dans la définition de mes variables numériques au lieu de NUMERIC...
Dés lors, je n'ai plus d'ENREGISTREMENT RESERVES PAR 1 AUTRE UTILISATEUR...

Il me reste à présent seulement la gestion de mes REQUETES, qui continuent d'être en LECTURE SEULE...

Si vous connaissez ACCESS, je suis obligé pour passer de décrire mes formulaires avec le paramètre TYPE DE RECORDSET à
Feuille rép.dyn.(MAJ globale)

Au lieu de :
Feuille de réponse dynamique

Hors ligne

#13 01/09/2012 18:17:26

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Cela signifie que je permets au système de modifier toutesl les tables rattachées dans la requete, et non plus la seule table primaire...
C'est dangereux... Et je me bloque les multiples possibilités offertes par Access qui pilote lui même ce type de possibilité

Dernière modification par nexeg (01/09/2012 18:18:19)

Hors ligne

#14 01/09/2012 18:19:42

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Je vais néanmoins exécuter votre requête système au moment où je lance ma requête telle que je l'avais initialement... Si quelques chose pouvait en ressortir...

Hors ligne

#15 05/09/2012 16:32:09

nexeg
Membre

Re : ACCESS - REQUETES verrouillées lecture seule & lignes verrouillées

Bonjour rjuju,
Je vous confirme que mon problème de verrou provenait de la définition de mes variables numériques au format FLOAT8...
C'est incroyable mais je suis passé avec NUMERIC 24/5 est les réservations des enregistrement pas d'autres utrilisateurs virtuels n'apparaissent plus...
Je vous remercie de vos recherches...

A cela, je dois rajouter que le driver ODBC utilisé, la toute dernière version téléchargée, pose quelques problèmes de fonctionnement avec ACCESS. il nous oblige à des aménagements des formulaires et requêtes, avec des paramètres trop contraignants comme ceux que j'évoquais dans mon message du 1/9/12 - 18H15
Nous quittons alors les formidables facilités que nous offre ACCESS pour la mise à jour de données...
A présent, je jongle, et j'applique des commandes SQL directes pour passer outre certains verrous d'enregistrements lors de mises à jour de requêtes en cascade avec des tables liées...

Dernière modification par nexeg (05/09/2012 16:33:37)

Hors ligne

Pied de page des forums