From 7faa1e8c82b17d44a7fe04ef84542db30b995072 Mon Sep 17 00:00:00 2001 From: Gaetano Savo Date: Thu, 26 Jun 2025 11:44:22 +0200 Subject: [PATCH] Riorganizzato conf.ps1 --- script/check-prerequisites.ps1 | 52 +++++++++++++++++++ script/conf.ps1 | 88 +++++++++++++++++++++----------- script/creadb.ps1 | 2 +- script/createTableFromSelect.ps1 | 10 ++-- script/elenco_oggetti.ps1 | 4 +- script/esporta.ps1 | 8 +-- script/estrae_stored.ps1 | 2 +- script/estrae_table.ps1 | 6 +-- script/importa.ps1 | 4 +- script/pulisceDB.ps1 | 2 +- 10 files changed, 129 insertions(+), 49 deletions(-) create mode 100644 script/check-prerequisites.ps1 diff --git a/script/check-prerequisites.ps1 b/script/check-prerequisites.ps1 new file mode 100644 index 00000000..ff2fcc42 --- /dev/null +++ b/script/check-prerequisites.ps1 @@ -0,0 +1,52 @@ +# check-prerequisites.ps1 +# Script per verificare i prerequisiti degli script PowerShell + +function Write-Status { + param( + [string]$check, + [bool]$passed, + [string]$details + ) + $status = if ($passed) { "[OK]" } else { "[ERRORE]" } + Write-Host "`n$check : $status" + if ($details) { + Write-Host $details + } +} + +# Verifica versione PowerShell +$psVersion = $PSVersionTable.PSVersion +$psVersionOk = $psVersion.Major -ge 5 -and $psVersion.Minor -ge 1 +Write-Status -check "Versione PowerShell" -passed $psVersionOk -details "Versione installata: $($psVersion.ToString())`nVersione minima richiesta: 5.1" + +# Verifica System.Data assembly +try { + Add-Type -AssemblyName System.Data + $adoNetOk = $true + Write-Status -check "ADO.NET System.Data" -passed $true -details "Assembly System.Data caricato correttamente" +} catch { + $adoNetOk = $false + Write-Status -check "ADO.NET System.Data" -passed $false -details "Errore nel caricamento di System.Data" +} + +# Verifica SqlCommand +try { + $connection = New-Object System.Data.SqlClient.SqlConnection + $command = New-Object System.Data.SqlClient.SqlCommand("", $connection) + $sqlCommandOk = $true + Write-Status -check "SQL Command" -passed $true -details "Creazione SqlCommand riuscita" +} catch { + $sqlCommandOk = $false + Write-Status -check "SQL Command" -passed $false -details "Errore nella creazione di SqlCommand: $($_.Exception.Message)" +} + +# Riepilogo finale +$allOk = $psVersionOk -and $adoNetOk -and $sqlCommandOk +Write-Host "`n----------------------------------------" +$exitMessage = if ($allOk) { "Tutti i prerequisiti sono soddisfatti" } else { "ATTENZIONE: Alcuni prerequisiti non sono soddisfatti" } +$exitColor = if ($allOk) { "Green" } else { "Red" } +Write-Host $exitMessage -ForegroundColor $exitColor +Write-Host "----------------------------------------" + +# Restituisci il risultato complessivo +exit ([int](-not $allOk)) diff --git a/script/conf.ps1 b/script/conf.ps1 index 1f33e85e..0806ce8f 100644 --- a/script/conf.ps1 +++ b/script/conf.ps1 @@ -1,48 +1,76 @@ +# Database C6StampeCentralizzate collaudo +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] +$DBStampeColl = @{ + sqlServerName = "bfdskrepsei01c.sysfideuram.sysbancafideuram.it" + databaseName = "C6StampeCentralizzate" + userName = "F701264" + securePassword = "contrsei" +} + +# Database C6StampeCentralizzate produzione +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] +$DBStampeProd = @{ + sqlServerName = "bfdskreport01p.fideuram.bancafideuram.it" + databaseName = "C6StampeCentralizzate" + userName = "F701264" + securePassword = "contrsei" +} + +# Database SEIReport Lettera benvenuto Produzione +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] +$DBBenvProd = @{ + sqlServerName = "bfdskreport02p.fideuram.bancafideuram.it" + databaseName = "SEIReport" + userName = "SEIReport" + securePassword = "SEIReport" +} + +# Database C6StampeCentralizzate locale +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] +$DBStampeLoc = @{ + sqlServerName = "DATABASE_PDC_LOCALE" + databaseName = "C6StampeCentralizzate" + userName = "F701264" + securePassword = "contrsei" +} + +# Database C6StampeCentralizzate testbes +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')] +$DBStampeTestbes = @{ + sqlServerName = "testbes.armundia.com" + databaseName = "C6StampeCentralizzate" + userName = "sa" + securePassword = "_p1sap1a" +} + # Configurazione database $config = @{ - # Credenziali database - # DbUser = "sa" - # DbPassword = "_p1sap1a" - # DbUser = "SEIReport" - # DbPassword = "SEIReport" - DbUser = "F701264" - DbPassword = "contrsei" - - # DbHostOutput - DbHostOutput = "DATABASE_PDC_LOCALE" - # DbHostOutput = "testbes.armundia.com" - - # DbHostInput - # DbHostInput = "bfdskrepsei01c.sysfideuram.sysbancafideuram.it" - # DbHostInput = "testbes.armundia.com" - # DbHostInput = "DATABASE_PDC_LOCALE" - DbHostInput = "bfdskreport01p.fideuram.bancafideuram.it" - # DbHostInput = "bfdskreport02p.fideuram.bancafideuram.it" - # DbName = "master" - ServerName = "CONSUNI" - DbName = "C6StampeCentralizzate" - # DbName = "SEIReport" - # Directory di log WorkDir = Split-Path -Path $PSScriptRoot -Parent LogDir = Join-Path (Split-Path -Path $PSScriptRoot -Parent) "logs" SqlDir = Join-Path (Split-Path -Path $PSScriptRoot -Parent) "sql" } +$DBI = $DBBenvProd +$DBO = $DBStampeLoc # Esporta le variabili come variabili d'ambiente -$env:dbUser = $config.DbUser -$env:dbPassword = $config.DbPassword -$env:dbHostInput = $config.DbHostInput -$env:dbHostOutput = $config.DbHostOutput -$env:dbName = $config.DbName +$env:dbHostInput = $DBI.sqlServerName +$env:dbNameInput = $DBI.databaseName +$env:dbUserInput = $DBI.userName +$env:dbPasswordInput = $DBI.securePassword + +$env:dbHostOutput = $DBO.sqlServerName +$env:dbNameOutput = $DBO.databaseName +$env:dbUserOutput = $DBO.userName +$env:dbPasswordOutput = $DBO.securePassword + $env:logDir = $config.LogDir $env:workDir = $config.WorkDir $env:sqlDir = $config.SqlDir -$env:ServerName = $config.ServerName # Funzione per ottenere la connection string function Get-DatabaseConnectionString { - return "Server=$($config.DbHostOutput);Database=$($config.DbName);User Id=$($config.DbUser);Password=$($config.DbPassword);" + return "Server=$($DBO.sqlServerName);Database=$($DBO.databaseName);User Id=$($DBO.userName);Password=$($DBO.securePassword);" } # Crea directory di log se non esiste diff --git a/script/creadb.ps1 b/script/creadb.ps1 index cf26c3e0..9f124079 100644 --- a/script/creadb.ps1 +++ b/script/creadb.ps1 @@ -86,7 +86,7 @@ foreach ($fileSql in $filesToExecute) { while (-not $success -and $retryCount -lt $maxRetries) { try { # Execute SQL and capture all output - $output = & sqlcmd -S $env:dbHostOutput -U $env:dbUser -P $env:dbPassword -d $env:dbName -i $fileSql -b 2>&1 + $output = & sqlcmd -S $env:dbHostOutput -U $env:dbUserOutput -P $env:dbPasswordOutput -d $env:dbNameOutput -i $fileSql -b 2>&1 $esitoComando = $LASTEXITCODE # Save output to log file and process it diff --git a/script/createTableFromSelect.ps1 b/script/createTableFromSelect.ps1 index 1230d563..b2c8d45c 100644 --- a/script/createTableFromSelect.ps1 +++ b/script/createTableFromSelect.ps1 @@ -151,16 +151,16 @@ try { THEN t.name + '(' + CAST(c.[precision] AS VARCHAR) + ',' + CAST(c.[scale] AS VARCHAR) + ')' ELSE t.name END as FullDataType - FROM [$env:serverName].[$dbName].sys.columns c - INNER JOIN [$env:serverName].[$dbName].sys.types t ON c.user_type_id = t.user_type_id - INNER JOIN [$env:serverName].[$dbName].sys.tables tbl ON c.object_id = tbl.object_id + FROM [$env:dbHostInput].[$dbName].sys.columns c + INNER JOIN [$env:dbHostInput].[$dbName].sys.types t ON c.user_type_id = t.user_type_id + INNER JOIN [$env:dbHostInput].[$dbName].sys.tables tbl ON c.object_id = tbl.object_id WHERE SCHEMA_NAME(tbl.schema_id) = '$schemaName' AND tbl.name = '$tableName' ORDER BY c.column_id "@ # Ottieni la struttura delle colonne - $columns = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbName -Query $columnQuery -Username $env:dbUser -Password $env:dbPassword -TrustServerCertificate + $columns = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbNameInput -Query $columnQuery -Username $env:dbUserInput -Password $env:dbPasswordInput -TrustServerCertificate # Costruisci la CREATE TABLE $createTableScript = "CREATE TABLE [$dbName].[$schemaName].[$tableName] (`n" @@ -184,7 +184,7 @@ GO -- Popolamento tabella -- INSERT INTO [$dbName].[$schemaName].[$tableName] --- SELECT * FROM [$env:serverName].[$dbName].[$schemaName].[$tableName]; +-- SELECT * FROM [$env:dbHostInput].[$dbName].[$schemaName].[$tableName]; -- GO "@ diff --git a/script/elenco_oggetti.ps1 b/script/elenco_oggetti.ps1 index 31fc7424..4e5c63a9 100644 --- a/script/elenco_oggetti.ps1 +++ b/script/elenco_oggetti.ps1 @@ -34,11 +34,11 @@ try { "@ # Esegui la query e salva i risultati - $connectionString = "Server=$($config.DbHostInput);Database=$($config.DbName);User Id=$($config.DbUser);Password=$($config.DbPassword);TrustServerCertificate=True" + $connectionString = "Server=$($env:dbHostInput);Database=$($env:dbNameInput);User Id=$($env:dbUserInput);Password=$($env:dbPasswordInput);TrustServerCertificate=True" $results = Invoke-Sqlcmd -ConnectionString $connectionString -Query $query # Prepara l'output - $output = "Elenco oggetti del database $($config.DbName) su $($config.DbHostInput) il $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`r`n" + $output = "Elenco oggetti del database $($env:DbName) su $($env:DbHostInput) il $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`r`n" $output += "Tipo;Schema;Nome`r`n" # Formatta e aggiungi ogni oggetto all'output diff --git a/script/esporta.ps1 b/script/esporta.ps1 index 8bbc7dd8..3f60e958 100644 --- a/script/esporta.ps1 +++ b/script/esporta.ps1 @@ -34,13 +34,13 @@ try { Import-Module SqlServer } - Write-Host "Connessione a $env:dbHostInput, database $env:dbName..." + Write-Host "Connessione a $env:dbHostInput, database $env:dbNameInput..." # Esegui la query e salva i risultati $result = Invoke-Sqlcmd -ServerInstance $env:dbHostInput ` - -Database $env:dbName ` - -Username $env:dbUser ` - -Password $env:dbPassword ` + -Database $env:dbNameInput ` + -Username $env:dbUserInput ` + -Password $env:dbPasswordInput ` -TrustServerCertificate ` -Query $Query diff --git a/script/estrae_stored.ps1 b/script/estrae_stored.ps1 index 61d004ba..d2a61c9f 100644 --- a/script/estrae_stored.ps1 +++ b/script/estrae_stored.ps1 @@ -38,7 +38,7 @@ try { "@ # Esegui la query - $sqlObjects = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbName -Query $query -Username $env:dbUser -Password $env:dbPassword -MaxCharLength 1000000 -TrustServerCertificate + $sqlObjects = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbNameInput -Query $query -Username $env:dbUserInput -Password $env:dbPasswordInput -MaxCharLength 1000000 -TrustServerCertificate # Funzione per pulire il nome del file function Clean-FileName { diff --git a/script/estrae_table.ps1 b/script/estrae_table.ps1 index 0bbfc75e..084d3b8b 100644 --- a/script/estrae_table.ps1 +++ b/script/estrae_table.ps1 @@ -95,10 +95,10 @@ try { $sqlParams = @{ ServerInstance = $env:dbHostInput - Database = $env:dbName + Database = $env:dbNameInput Query = $query - Username = $env:dbUser - Password = $env:dbPassword + Username = $env:dbUserInput + Password = $env:dbPasswordInput MaxCharLength = 1000000 TrustServerCertificate = $true ConnectionTimeout = 30 diff --git a/script/importa.ps1 b/script/importa.ps1 index 3ad23b7f..5ab5e1b1 100644 --- a/script/importa.ps1 +++ b/script/importa.ps1 @@ -45,7 +45,7 @@ try { exit 1 } - Write-Host "Connessione a $env:dbHostOutput, database $env:dbName..." + Write-Host "Connessione a $env:dbHostOutput, database $env:dbNameOutput..." # Get column names from CSV $columns = $data[0].PSObject.Properties.Name @@ -79,7 +79,7 @@ try { $query = "INSERT INTO $TableName ($columnList) VALUES ($valuesList)" # Execute insert for each row - $connectionString = "Server=$env:dbHostOutput;Database=$env:dbName;User Id=$env:dbUser;Password=$env:dbPassword;Encrypt=False" + $connectionString = "Server=$env:dbHostOutput;Database=$env:dbNameOutput;User Id=$env:dbUserOutput;Password=$env:dbPasswordOutput;Encrypt=False" Invoke-Sqlcmd -ConnectionString $connectionString ` -Query $query diff --git a/script/pulisceDB.ps1 b/script/pulisceDB.ps1 index b6c0b6df..53d7cecd 100644 --- a/script/pulisceDB.ps1 +++ b/script/pulisceDB.ps1 @@ -7,7 +7,7 @@ $logFile = Join-Path $env:logDir "${scriptName}.log" "Start pulizia stored procedure $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" | Out-File -FilePath $logFile # Connessione al database -$connectionString = "Server=$env:dbHostOutput;Database=$env:dbName;User Id=$env:dbUser;Password=$env:dbPassword;" +$connectionString = "Server=$env:dbHostOutput;Database=$env:dbNameOutput;User Id=$env:dbUserOutput;Password=$env:dbPasswordOutput;" $connection = New-Object System.Data.SqlClient.SqlConnection($connectionString) try {