Bonjour,
Suite au renouvellement de notre parc de machines nous avons plusieurs stations qui ne sont plus utilisées mais qui apparaissent encore dans la liste des hôtes de tâches MyPDMTools. Je souhaite supprimer ces hôtes afin de ne pas polluer la liste déjà bien remplie, et donc pour cela lancer une requête SQL dans un script VBA.
La requête est donc : StrSQL = "DELETE FROM dbo.Hosts WHERE dbo.Hosts.HostID = " & N_Host (avec N_Host le numéro du PC que je veux supprimer)
Mais cette requête ne marche pas car d'autres tables font mention de ces "HostID" . J'ajoute donc d'autres requêtes en préambule de cette requête, ce qui donne au final (je copie juste les lignes de requêtes)
StrSQL = "DELETE FROM dbo.TaskInstances WHERE dbo.TaskInstances.InitHostID = " & N_Host
StrSQL = "DELETE FROM dbo.TaskHosts WHERE dbo.TaskHosts.HostID = " & N_Host
StrSQL = "DELETE FROM dbo.Hosts WHERE dbo.Hosts.HostID = " & N_Host
Mais un message d'erreur m'indique que la première requête ne peux s'exécuter : "L'instruction DELETE est en conflit avec la contrainte REFERENCE "FK_TaskSelection_TaskInstances". Le conflit s'est produit dans la base de de données "XXXX" , table "dbo.TaskSelection", column 'TaskInstanceID' .
Je comprends qu'il faudrait que je nettoie d'abord la table TaskSelection mais je ne sais pas comment cibler les bonnes entrées (celles qui mentionnent le TaskInstanceID que j'essaie de supprimer ? ).
Bref, si quelqu'un a une idée voir même une requête complète ça m'aiderait grandement.
Autre solution : peut-être qu'il y a plus simple que supprimer les entrées? Par exemple remplacer la valeur de l'HostID par un ID "vide" ?
Merci de votre aide.
Après discussion avec visiativ la manip' est vraiment très simple : dans le gestionnaire sql il faut simplement ouvrir la table dbo.Hosts et supprimer la ligne correspondant à l'ordinateur que l'on veut suppirimer. Testé et validé !
1 « J'aime »
Bonjour @romain.jouanny ,
Du coup on fait comment pour supprimer les lignes inutiles dans la table dbo.Hosts ? (NB : je ne suis pas pro de SQL studio ...)
Le fait de supprimer une ligne n'a aucune autre incidence dans EPDM (qui pourrait éventuellement créer des bugs)??
Merci
Il faut sélectionner toute la ligne (en cliquant sur la première case vide), puis bouton droit --> supprimer.
D'après l'intervenant visiativ qui me l'a montré en direct il n'y a aucun impact, au pire si vous supprimez un hôte non souhaité vous pouvez facilement le déclarer à nouveau comme hôte via la procédure habituelle (sur le pc, bouton droit sur la boule EPDM dans la barre des tâches --> Configuration de l'hôte de tâche).
Merci @romain.jouanny pour ce retour.
Donc si j'ai tout bien compris il faut aller sur la table dbo.Hosts , faire un clic droit et sélectionner "Edit top 200 rows",
A partir de là, SQL montre les valeurs contenues dans la table et il suffit de faire un clic droit en bout de ligne et choisir "Delete"
C'est bien ça ??
Désolé d'être aussi relou mais je préfère assurer mes arrières avant de casser EPDM...
Merci.
1 « J'aime »
Oui c'est tout à fait cela ! J'avais effectivement sauter l'étape "Edit top 200 rows".
Pas de souci pour les précisions, je suis également très frileux quand il s'agit de toucher la base en direct !
2 « J'aime »
Bonjour @romain.jouanny
Du coup je me suis lancé ce matin et j'ai essayé de supprimer un vieux poste qui traine toujours dans les PC listés pour les taches.
J'ai par contre eu droit à ce merveilleux message :
Il semble donc que je soit confronté à votre problème initial (ou un y ressemblant beaucoup).
Vous êtes sûr de ne pas avoir fait de manip supplémentaire pour arriver à supprimer les ordi de la liste dbo.Hosts ?? Genre supprimer l'historique des taches ou autre nettoyage de table ??
Genre avoir modifié le nombre d'enregistrement des taches comme expliqué en point 5 ici : https://www.javelin-tech.com/blog/2020/06/solidworks-pdm-monitor-tasks/ (ce qui devrait logiquement avoir pour conséquence de nettoyer la table dbo.taskinstances de toutes les vieilles taches et peut être de débloquer la suppression du viel hôte)
D'avance merci
Bonjour, en effet cela est probablement due à l'historique des tâches dans lequel une tâche ayant tourné sur ce poste apparait encore. Pour ma part je limite cet historique aux 400 dernières tâches ce qui expliquerait pourquoi je n'ai pas eu ce problème.
Vous pouvez commencer par vérifier si cet hôte apparait en effet dans la Liste des tâches dans la console d'Administration, puis supprimer les tâches en question ?
En tous cas je suis navré de voir que ça ne marche pas chez vous alors que j'étais confiant et vous avais dit d'y aller sans crainte :(
Bonjour,
Après avoir modifié le nombre d'enregistrement des taches comme expliqué en point 5 ici : https://www.javelin-tech.com/blog/2020/06/solidworks-pdm-monitor-tasks/ , (je suis passé à 200 réussi et 200 échec) j'ai effectivement pu supprimer mes vieux hôtes indésirables.
Il est a noter que limiter le nombre d'enregistrement de taches réussies et d'échecs influe de façon incroyable sur la réactivité de la liste des taches dans l'outil admin d'EPDM. Il était devenu quasiment inutilisable pour moi avec des temps d'accès de l'ordre de la minute voire plus pour juste sélectionner une ligne dans l'historique et voir ses propriétés (quand il voulait bien afficher quelque chose).
Maintenant avec une liste limitée à 400 entrées je retrouve un outil parfaitement exploitable (NB j'avais 'seulement' 24000 entrées avant cette modification de paramètres ce qui n'est pas non plus énormissime) .
Encore merci.
1 « J'aime »
Ah oui en effet je crois que c'est ce qui m'avait poussé à nettoyer la liste aussi ! Bonne nouvelle si ça fonctionne !