# ============================================================ # Probe de LECTURE SEULE de la base Licence HFSQL via OLEDB. # N'effectue AUCUNE écriture. N'expose aucun secret. # ============================================================ param( [string]$ConfigPath = "config/hfsql-test.local.json", [string]$Section = "LicenseConnection", [string]$DatabaseOverride = "" ) $ErrorActionPreference = "Stop" # --- Lecture de la config locale (contient les secrets) --- $config = Get-Content $ConfigPath -Raw | ConvertFrom-Json $db = $config.$Section if ($null -eq $db) { Write-Output "SECTION $Section : ABSENTE" exit 1 } $server = $db.Server $port = $db.Port $database = if ([string]::IsNullOrWhiteSpace($DatabaseOverride)) { $db.DatabaseName } else { $DatabaseOverride } $login = $db.Login $password = $db.Password Write-Output "=== PROBE LECTURE SEULE OLEDB HFSQL ===" Write-Output "Section : $Section" Write-Output "Server : $server" Write-Output "Port : $port" Write-Output "Database : $database" Write-Output "Login : $login" Write-Output "Provider : PCSOFT.HFSQL" Write-Output "Mode : LECTURE SEULE (aucune ecriture)" Write-Output "" # --- Construction de la connection string OLEDB --- $connStr = "Provider=PCSOFT.HFSQL;Data Source=$server`:$port;Initial Catalog=$database;User ID=$login;Password=$password" try { $conn = New-Object System.Data.OleDb.OleDbConnection($connStr) $conn.Open() Write-Output "CONNEXION : OUVERTE" Write-Output "State : $($conn.State)" Write-Output "" # --- Liste des tables --- $schema = $conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::Tables, $null) if ($null -eq $schema) { Write-Output "TABLES : schema non disponible" } else { Write-Output "TABLES ($($schema.Rows.Count)) :" foreach ($row in $schema.Rows) { $tableName = $row["TABLE_NAME"] $tableType = $row["TABLE_TYPE"] Write-Output " - $tableName [$tableType]" } } Write-Output "" # --- Test SELECT 1 --- $cmd = $conn.CreateCommand() $cmd.CommandText = "SELECT 1" $result = $cmd.ExecuteScalar() Write-Output "SELECT 1 : $result" $conn.Close() Write-Output "" Write-Output "CONNEXION : FERMEE" Write-Output "RESULTAT : OK (lecture seule)" exit 0 } catch { Write-Output "CONNEXION : ECHEC" Write-Output "Erreur : $($_.Exception.Message)" Write-Output "RESULTAT : KO" exit 3 }