PDC_REPORT_CreazioneDB/script/estrae_stored.ps1
2025-06-06 19:02:52 +02:00

80 lines
2.6 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
}