Update AdHoc-Backup.ps1

This commit is contained in:
Mattia Tadini 2025-11-10 14:02:18 +00:00
parent f804849937
commit 127114a7c5

View File

@ -1,5 +1,5 @@
<#
Backup_AdHoc_rclone_mail_fixed_v3_fix28_grantANY.ps1
Backup_AdHoc_rclone_mail_fixed_v3_fix26.ps1
Fix:
- PowerShell è case-insensitive: le variabili locali "$files" sovrascrivevano "$Files" (hashtable globale).
Rinominati i locali in "$outFiles" e, in Write-Log, uso esplicito di $script:Files.Log per evitare collisioni.
@ -469,35 +469,7 @@ function Backup-SqlDatabases {
$sqlcmd = Resolve-Sqlcmd
if (-not $sqlcmd) { throw "sqlcmd.exe non trovato (PATH o Client Tools mancanti)." }
Write-Log INFO "sqlcmd: $sqlcmd
# --- PRE-FLIGHT: Concedi a NT AUTHORITY\SYSTEM il permesso server-level 'BACKUP ANY DATABASE' ---
try {
$sqlLines = @(
'USE master;'
"IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'NT AUTHORITY\\SYSTEM')"
' CREATE LOGIN [NT AUTHORITY\SYSTEM] FROM WINDOWS;'
"GRANT BACKUP ANY DATABASE TO [NT AUTHORITY\\SYSTEM];"
)
$sqlGrant = [string]::Join("`r`n", $sqlLines)
$tmpGrant = Join-Path $Paths.SqlStage "grant_SYSTEM_server.sql"
Set-Content -LiteralPath $tmpGrant -Value $sqlGrant -Encoding ASCII
$grantArgs = Build-SqlcmdArgs -WindowsAuth:$SqlUseWindowsAuth -User $SqlUser -Password $SqlPassword -Instance $SqlInstance -InputFile $tmpGrant
Log-SqlcmdArgsSafe -Args $grantArgs
& $sqlcmd @grantArgs
if ($LASTEXITCODE -ne 0) {
Write-Log WARN "Grant server-level BACKUP ANY DATABASE a NT AUTHORITY\\SYSTEM fallito (ExitCode=$LASTEXITCODE)."
} else {
Write-Log INFO "Concesso BACKUP ANY DATABASE a NT AUTHORITY\\SYSTEM (server-level)."
}
Remove-Item -LiteralPath $tmpGrant -Force -ErrorAction SilentlyContinue
} catch {
Write-Log WARN "Errore durante il pre-flight GRANT BACKUP ANY DATABASE a SYSTEM: $_"
}
# --- FINE PRE-FLIGHT ---
"
Write-Log INFO "sqlcmd: $sqlcmd"
$dbList = @()
if (@($DbInclude).Count -gt 0) {