# 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 } try { # Importa il modulo SqlServer se non è già caricato if (-not (Get-Module -Name SqlServer)) { Import-Module SqlServer } # Query per estrarre la stored procedure $query = @" SELECT s.name as SchemaName, o.name as ProcedureName, CAST(m.definition as NVARCHAR(MAX)) as ProcedureDefinition FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id INNER JOIN sys.schemas s ON o.schema_id = s.schema_id WHERE o.type = 'P' -- AND o.name = 'CercaCaratteriAnomali_20150205' "@ # Esegui la query $storedProcedures = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbName -Query $query -Username $env:dbUser -Password $env:dbPassword -TrustServerCertificate -MaxCharLength 1000000 # Funzione per pulire il nome del file function Clean-FileName { param([string]$name) # Sostituisce caratteri non validi con underscore $invalidChars = [IO.Path]::GetInvalidFileNameChars() $invalidChars += '[', ']', ' ', '(', ')', '{', '}', '´', '`', '''', '"' $result = $name foreach ($char in $invalidChars) { $result = $result.Replace($char, '_') } return $result } # Per ogni stored procedure trovata foreach ($sp in $storedProcedures) { $schemaName = Clean-FileName $sp.SchemaName $procName = Clean-FileName $sp.ProcedureName $definition = $sp.ProcedureDefinition # Crea il nome del file $fileName = Join-Path $OutputPath "${schemaName}_${procName}.sql" # Formatta il contenuto # -- Schema: $schemaName # -- Stored Procedure: $procName $content = @" $($definition.Trim()) "@ # Rimuovi righe vuote multiple $lines = $content -split "`r`n" | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } $content = $lines -join "`r`n" # Scrivi il contenuto nel file con codifica UTF8 con BOM $utf8WithBom = New-Object System.Text.UTF8Encoding($true) [System.IO.File]::WriteAllText($fileName, $content, $utf8WithBom) 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 }