diff --git a/AdHoc-Backup.ps1 b/AdHoc-Backup.ps1 index bd64b27..10928ce 100644 --- a/AdHoc-Backup.ps1 +++ b/AdHoc-Backup.ps1 @@ -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) {