105 lines
4.4 KiB
Plaintext
105 lines
4.4 KiB
Plaintext
====================================================================
|
|
PROBE HFSQL SHUTDOWN CRASH — OUTIL DE DIAGNOSTIC (SRV-OMIKA)
|
|
====================================================================
|
|
|
|
But
|
|
---
|
|
Reproduire, de façon TOTALEMENT indépendante d'Omika.Api, le crash
|
|
natif du module wd300vm64.dll observé à chaque Stop-Service.
|
|
|
|
Cet outil n'utilise NI ASP.NET, NI Generic Host, NI conteneur DI,
|
|
NI repository Omika, NI RSA/QR/licence. Il ne charge que le provider
|
|
OLE DB PC SOFT (PCSOFT.HFSQL) via System.Data.OleDb.
|
|
|
|
Prérequis
|
|
---------
|
|
- Windows PowerShell 5.1 (intégré à Windows) : lancer avec powershell.exe.
|
|
- Le provider OLE DB PC SOFT (PCSOFT.HFSQL) doit être installé sur la machine.
|
|
- Compte HFSQL technique autorisé à ouvrir une session sur le serveur ciblé.
|
|
|
|
Les 3 modes
|
|
-----------
|
|
Mode A — NoConnection
|
|
Le process ne crée AUCUNE connexion OLE DB puis se termine.
|
|
=> Contrôle : vérifie que le process ne crashe pas SANS HFSQL.
|
|
Si ce mode crashe, le problème n'est PAS lié à HFSQL.
|
|
|
|
Mode B — OpenClose
|
|
Crée une OleDbConnection (Provider=PCSOFT.HFSQL), Open(),
|
|
exécute un SELECT lecture seule, ferme le reader, dispose la
|
|
commande, Close(), Dispose(), affiche PROBE_TERMINE, quitte.
|
|
=> Reproduit le cycle minimal open/close sans Omika.Api.
|
|
Si ce mode crashe à la sortie, le crash est dans le provider
|
|
lui-même (indépendant d'Omika.Api).
|
|
|
|
Mode C — OpenCloseReleasePool
|
|
Identique au Mode B, puis appelle
|
|
OleDbConnection.ReleaseObjectPool() avant la sortie.
|
|
=> Teste si la libération explicite du pool évite le crash.
|
|
|
|
Paramètres
|
|
----------
|
|
-Mode : NoConnection | OpenClose | OpenCloseReleasePool (obligatoire)
|
|
-Server : hôte du serveur HFSQL Client/Serveur (obligatoire)
|
|
-Port : port HFSQL (défaut 4900)
|
|
-Database : nom de la base/analyse (obligatoire)
|
|
-User : compte technique HFSQL (obligatoire)
|
|
-Query : requête SELECT lecture seule (défaut "SELECT 1")
|
|
|
|
Le mot de passe N'EST PAS un paramètre : il est demandé de façon
|
|
interactive (Read-Host -AsSecureString) et n'est jamais affiché.
|
|
|
|
Commandes Windows PowerShell 5.1
|
|
--------------------------------
|
|
Ouvrir une console PowerShell 5.1 (powershell.exe), puis :
|
|
|
|
# MODE A (contrôle, sans HFSQL)
|
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
|
|
"C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
|
|
-Mode NoConnection -Server SERVEUR -Database BASE -User COMPTE
|
|
|
|
# MODE B (open/close)
|
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
|
|
"C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
|
|
-Mode OpenClose -Server SERVEUR -Port 4900 -Database BASE -User COMPTE
|
|
|
|
# MODE C (open/close + ReleaseObjectPool)
|
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
|
|
"C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
|
|
-Mode OpenCloseReleasePool -Server SERVEUR -Port 4900 -Database BASE -User COMPTE
|
|
|
|
Le mot de passe est saisi à l'invite (non affiché).
|
|
|
|
Contrôle des événements Windows après chaque exécution
|
|
------------------------------------------------------
|
|
Après CHAQUE exécution, vérifier l'Observateur d'événements :
|
|
|
|
1. eventvwr.msc > Journaux Windows > Application
|
|
2. Filtrer / rechercher les événements récents :
|
|
- "Application Error" (Event ID 1000)
|
|
- ".NET Runtime" (Event ID 1026)
|
|
- "Windows Error Reporting" (Event ID 1001)
|
|
3. Dans les détails, chercher :
|
|
- module fautif : wd300vm64.dll
|
|
- code exception : 0xc0000005 ou 0xc0000409
|
|
|
|
Ou via commande (après chaque run, noter l'heure) :
|
|
|
|
Get-WinEvent -LogName Application -MaxEvents 30 |
|
|
Where-Object { $_.Id -in 1000,1026,1001 } |
|
|
Format-List TimeCreated, Id, ProviderName, Message
|
|
|
|
Interprétation
|
|
--------------
|
|
- MODE A crashe -> le crash n'est PAS spécifique à HFSQL.
|
|
- MODE B crashe -> le provider PCSOFT.HFSQL crashe à la sortie,
|
|
indépendamment d'Omika.Api.
|
|
- MODE C ne crashe pas -> ReleaseObjectPool() (ou l'ordre de libération)
|
|
change le comportement à la sortie.
|
|
- Aucun mode ne crashe -> le crash PROD implique l'environnement Omika.Api
|
|
(DI, hosted services, lifetime) et non le provider seul.
|
|
|
|
Ne PAS utiliser : OLE DB Services=-1 ni -2 (cassent PCSOFT.HFSQL).
|
|
Ne PAS tenter de migration ODBC ici.
|
|
====================================================================
|