From 9edbd0a91dab7a7a1607cf8b7d7b74e53d243e0d Mon Sep 17 00:00:00 2001 From: Gaetano Savo Date: Thu, 5 Jun 2025 15:09:44 +0200 Subject: [PATCH] Script per estrarre le stored --- .gitignore | 3 +- script/conf.ps1 | 31 ++++++++++++++++++++ script/creadb.ps1 | 23 +++++++-------- script/estrae_stored.ps1 | 57 +++++++++++++++++++++++++++++++++++++ sql/enable_F701264_full.sql | 43 ++++++++++++++++++++++++++++ sql/enable_sa_full.sql | 32 +++++++++++++++++++++ 6 files changed, 176 insertions(+), 13 deletions(-) create mode 100644 script/conf.ps1 create mode 100644 script/estrae_stored.ps1 create mode 100644 sql/enable_F701264_full.sql create mode 100644 sql/enable_sa_full.sql diff --git a/.gitignore b/.gitignore index 5292519a..eabe9910 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -logs/ \ No newline at end of file +logs/ +stored*/ diff --git a/script/conf.ps1 b/script/conf.ps1 new file mode 100644 index 00000000..69dc7e41 --- /dev/null +++ b/script/conf.ps1 @@ -0,0 +1,31 @@ +# Configurazione database +$config = @{ + # Credenziali database + DbUser = "sa" + DbPassword = "_p1sap1a" + # DbHost = "DATABASE_PDC_LOCALE" + DbHost = "testbes.armundia.com" + DbName = "C6StampeCentralizzate" + + # Directory di log + LogDir = Join-Path $PSScriptRoot "..\logs" +} + +# Esporta le variabili come variabili d'ambiente +$env:dbUser = $config.DbUser +$env:dbPassword = $config.DbPassword +$env:dbHost = $config.DbHost +$env:dbName = $config.DbName +$env:logDir = $config.LogDir + +# Funzione per ottenere la connection string +function Get-DatabaseConnectionString { + return "Server=$($config.DbHost);Database=$($config.DbName);User Id=$($config.DbUser);Password=$($config.DbPassword);" +} + +# Crea directory di log se non esiste +if (-not (Test-Path $config.LogDir)) { + New-Item -ItemType Directory -Path $config.LogDir | Out-Null +} + +# La configurazione sarà disponibile quando lo script viene dot-sourced diff --git a/script/creadb.ps1 b/script/creadb.ps1 index 39598e92..e100912e 100644 --- a/script/creadb.ps1 +++ b/script/creadb.ps1 @@ -1,24 +1,23 @@ -# SQL Server connection parameters +# Importa configurazione +. "$PSScriptRoot\conf.ps1" + +# Imposta directory di lavoro $env:compareDir = $PSScriptRoot $env:workdir = Split-Path -Path $env:compareDir -Parent -$env:logDir = Join-Path $env:workdir "logs" $env:scriptDir = Join-Path $env:workdir "script" -if (-not (Test-Path $env:logDir)) { - New-Item -ItemType Directory -Path $env:logDir | Out-Null -} $sqlbase = Join-Path $env:workdir "sql" -$env:dbUser = "sa" -$env:dbPassword = "_p1sap1a" -$env:dbHost = "DATABASE_PDC_LOCALE" + $scriptName = $MyInvocation.MyCommand.Name $logFile = Join-Path $env:logDir "${scriptName}.log" # for debug "start" | Out-File -FilePath $logFile # List of SQL files to execute in order $sqlFiles = @( - "C6SC01_creadb.sql", - "C6SC08_creauser.sql", - "StampeCentralizzateBackupRidotto.sql", + # "C6SC01_creadb.sql", + # "C6SC08_creauser.sql", + # "StampeCentralizzateBackupRidotto.sql", + # "enable_sa_full.sql", + "enable_F701264_full.sql", "" ) @@ -52,7 +51,7 @@ foreach ($fileName in $sqlFiles) { IF ( $esitoComando -eq 0 ) { "run $fileName " | Out-File -FilePath $logFile -Append - Remove-Item -Path $fileLog | Out-File -FilePath $logFile -Append + # Remove-Item -Path $fileLog | Out-File -FilePath $logFile -Append (Get-Date).ToString("yyyy-MM-dd_HH:mm:ss")+" item: $fileSql completed risultato in $fileLog " | Out-File -FilePath $logFile -Append } else { $(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")+" $esitoComando" diff --git a/script/estrae_stored.ps1 b/script/estrae_stored.ps1 new file mode 100644 index 00000000..ea56d13c --- /dev/null +++ b/script/estrae_stored.ps1 @@ -0,0 +1,57 @@ +# Importa configurazione +. "$PSScriptRoot\conf.ps1" + +# Imposta il percorso di output nella cartella sql +$OutputPath = Join-Path $env:workdir "sql\stored" + +# Verifica che la directory di output esista, altrimenti la crea +if (-not (Test-Path -Path $OutputPath)) { + New-Item -ItemType Directory -Path $OutputPath | Out-Null +} + +# Query per estrarre le stored procedures +$query = @" +SELECT + OBJECT_SCHEMA_NAME(object_id) as SchemaName, + OBJECT_NAME(object_id) as ProcedureName, + OBJECT_DEFINITION(object_id) as ProcedureDefinition +FROM sys.procedures +ORDER BY SchemaName, ProcedureName +"@ + +try { + # Importa il modulo SqlServer se non è già caricato + if (-not (Get-Module -Name SqlServer)) { + Import-Module SqlServer + } + + # Esegui la query per ottenere le stored procedures + $storedProcedures = Invoke-Sqlcmd -ServerInstance $env:dbHost -Database $env:dbName -Query $query -Username $env:dbUser -Password $env:dbPassword + + # Per ogni stored procedure trovata + foreach ($sp in $storedProcedures) { + $schemaName = $sp.SchemaName + $procName = $sp.ProcedureName + $definition = $sp.ProcedureDefinition + + # Crea il nome del file + $fileName = Join-Path $OutputPath "${schemaName}_${procName}.sql" + + # Scrivi il contenuto nel file + $content = @" +-- Schema: $schemaName +-- Stored Procedure: $procName +-- Data Estrazione: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss") + +$definition +"@ + $content | Out-File -FilePath $fileName -Encoding UTF8 + + Write-Host "Creato file per stored procedure: $schemaName.$procName" + } + + Write-Host "`nEstrazione completata con successo!" +} catch { + Write-Error "Errore durante l'estrazione delle stored procedures: $_" + exit 1 +} diff --git a/sql/enable_F701264_full.sql b/sql/enable_F701264_full.sql new file mode 100644 index 00000000..ec8ef8f5 --- /dev/null +++ b/sql/enable_F701264_full.sql @@ -0,0 +1,43 @@ +-- Abilita l'autenticazione mista (Windows e SQL) +EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2 +GO + +-- Disabilita le policy di password a livello server +EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'PasswordComplexity', REG_DWORD, 0 +EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'MinPasswordLength', REG_DWORD, 0 +GO + +IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = 'F701264') +BEGIN + CREATE LOGIN [F701264] WITH PASSWORD = 'Contr$ei2023' +END +GO + +-- Abilita l'account F701264 e imposta password +ALTER LOGIN [F701264] WITH + PASSWORD = N'contrsei', + CHECK_POLICY = OFF, + CHECK_EXPIRATION = OFF +GO +ALTER LOGIN [F701264] ENABLE +GO + +-- Assegna il ruolo sysadmin all'utente F701264 +ALTER SERVER ROLE [sysadmin] ADD MEMBER [F701264] +GO + +-- Concedi permessi TCP/IP +EXEC sp_configure 'remote access', 1 +GO +RECONFIGURE +GO + +-- Abilita il protocollo TCP/IP +EXEC sp_configure 'show advanced options', 1 +GO +RECONFIGURE +GO +EXEC sp_configure 'remote access', 1 +GO +RECONFIGURE +GO diff --git a/sql/enable_sa_full.sql b/sql/enable_sa_full.sql new file mode 100644 index 00000000..bc067567 --- /dev/null +++ b/sql/enable_sa_full.sql @@ -0,0 +1,32 @@ +-- Abilita l'autenticazione mista (Windows e SQL) +EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2 +GO + +-- Abilita l'account SA e imposta password +ALTER LOGIN [sa] WITH + PASSWORD = N'_p1sap1a', + CHECK_POLICY = OFF, + CHECK_EXPIRATION = OFF +GO +ALTER LOGIN [sa] ENABLE +GO + +-- Assegna il ruolo sysadmin all'utente sa +ALTER SERVER ROLE [sysadmin] ADD MEMBER [sa] +GO + +-- Concedi permessi TCP/IP +EXEC sp_configure 'remote access', 1 +GO +RECONFIGURE +GO + +-- Abilita il protocollo TCP/IP +EXEC sp_configure 'show advanced options', 1 +GO +RECONFIGURE +GO +EXEC sp_configure 'remote access', 1 +GO +RECONFIGURE +GO