Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
d'abord le contexte
PB 12.5
SQL Server 2012
Connexion par ODBC sqlsrv32.dll (pas le native client)
Autocommit activé (*gasp*)
Programme installé chez plus d'une centaine de clients.
Nous avons un problème aléatoire chez 1 client.
Chez ce client ils sont en tout RDP sur des serveurs Windows 2012 (pas le seul client dans cette configuration)
Dans un de nos écran (écran de paramétrage donc il n'y a qu'une personne qui y touche à a fois)
C'est le seul écran qui bug (alors qu'on en a plusieurs centaines dans l'appli)
Dans l'écran il y a un tabpage
Sur le tabpage 1 il y a des SLE dont les valeurs serviront à remplir la dw_1 qui attaque la table T1
Sur le tappage 2 il y a une dw (non connecté à la base) dont les valeurs serviront à remplir la dw_2 qui attaque la table T2
Pour la partie sauvegarde ça se passe comme suit
dw_1.setItem('t1col1',tab1.sle_1.text)
dw_1.setItem('t1col2',tab1.sle_2.text)
etc.
dw_2.rowsMove(.....,DeleteBuffer)
dw_2.update()
boucle dw_2.insertRow(0) dw_2.setItem('t2col1',...) dw_2.setItem('t2col2',...)
dw_1.update()
Les updates se font systématiquement même si les données n'ont pas été changée
Le but ici n'est pas de savoir comment améliorer le programme on sait déjà comment il aurait dû être écrit
Nous avons de façon aléatoire un dberror (on ne sait pas sur quelle dw)
SQLSTATE = S0022 [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 't1col2'. No changes made in database INSERT INTO "T2" ("t2col1","t2col2","t2col3") VALUES (val1,val2,'val3')
La requête affichée est la requête d'insertion dans la table T2 et la invalid column est une colonne de la table t1
Cette colonne n'est pas mentionnée dans la dw_2, n'existe pas dans la table T2
C'est un peu comme si le driver ODBC ou le serveur SQL Server partait en sucette.
Est-ce que vous avez déjà eu ce genre de cas ?
Des idées pour savoir d'où ça peut venir ?
Merci
Hors ligne
Pas de triggers dans la base de données en question?
Hors ligne
Une piste peut être est de contrôler les ID des fichier datawindow (en edit source) afin de vérifier qu'ils sont bien en correspondance avec les colonnes.
Sinon dans ce genre de cas, je reconstruit les fichiers datawindows et si cela ne fonctionne pas je les isole complètement en créant un petit projet qui les utilise pour contrôler leur fonctionnement.
Hors ligne
Pas de trigger sur les tables en question
Les ID correspondent bien
Le problème ne se produit que chez un client sur plus d'une centaine et aléatoirement.
Si on remonte un backup de leur base chez nous ça ne se reproduit pas c'est pour ça que je pensais à un problème sur l'environnement client.
Et comme ils sont 300 à bosser sur leurs serveurs RDP difficile d'arrêter la production juste pour tester.
Hors ligne
Bonjour,
A mon avis pour trouver la solution à votre problème, j'activerai la trace ODBC sur le poste client afin d'avoir vraiment ce qui se passe.
Cordialement
Hors ligne