# ============================================================ # Probe de diagnostic du crash natif wd300vm64.dll à la FERMETURE # du process (Stop-Service OmikaApi). # # But : isoler si le provider OLE DB PCSOFT.HFSQL plante au # teardown du POOL DE SESSIONS OLE DB à la sortie du process. # # Lancer DEUX FOIS, chacune dans son propre process pwsh : # 1) pooling ACTIF (défaut) : sans -DisablePooling -> attendu CRASH à la sortie # 2) pooling DÉSACTIVÉ : avec -DisablePooling -> attendu AUCUN crash # # LECTURE SEULE : n'effectue qu'un SELECT 1. Aucun secret # n'est loggé (le mot de passe n'est jamais affiché). # ============================================================ param( [Parameter(Mandatory = $true)][string]$Server, [int]$Port = 4900, [Parameter(Mandatory = $true)][string]$Database, [Parameter(Mandatory = $true)][string]$User, [string]$Password = "", [switch]$DisablePooling ) $ErrorActionPreference = "Stop" # Chaîne de connexion sans jamais afficher le mot de passe. $connStr = "Provider=PCSOFT.HFSQL;Data Source=${Server}:${Port};Initial Catalog=${Database};User ID=${User}" if ($Password) { $connStr += ";Password=$Password" } if ($DisablePooling) { $connStr += ";OLE DB Services=-1" } Write-Host "=== PROBE SHUTDOWN OLE DB HFSQL ===" Write-Host "Mode pooling : $(if ($DisablePooling) { 'DESACTIVE (OLE DB Services=-1)' } else { 'ACTIF (defaut)' })" Write-Host "Serveur : ${Server}:${Port}" Write-Host "Base : $Database" Write-Host "Compte : $User" Write-Host "" $conn = New-Object System.Data.OleDb.OleDbConnection($connStr) $conn.Open() Write-Host "Connexion ouverte : $($conn.State)" $cmd = $conn.CreateCommand() $cmd.CommandText = "SELECT 1" $result = $cmd.ExecuteScalar() Write-Host "SELECT 1 : $result" $cmd.Dispose() $conn.Close() Write-Host "Connexion fermee : $($conn.State)" $conn.Dispose() Write-Host "Connexion disposee." Write-Host "" Write-Host "FIN DU SCRIPT : le process pwsh va se terminer maintenant." Write-Host ">>> OBSERVER ICI : crash natif (Application Error 1000, wd300vm64.dll," Write-Host " 0xc0000005 / 0xc0000409) ou sortie propre sans evenement. <<<"