#!/usr/bin/env ruby # frozen_string_literal: true # ========================================================== # Verificar backup en DASU-SQL4 - qué archivo hay y qué fecha tiene # ========================================================== require_relative 'drones/lib/dasu_executor' puts "=== VERIFICANDO BACKUP EN DASU-SQL4 ===" puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}" puts "" ps_script = <<~PSCMD.strip $ErrorActionPreference = "Stop" $JSON_PATH = "C:\\temp\\backup_info_output.json" $null = New-Item -ItemType Directory -Force -Path "C:\\temp" # Listar backups en F:\\BACKUP Write-Host "=== ARCHIVOS EN F:\\BACKUP ===" $backups = Get-ChildItem "F:\\BACKUP\\*.bak" | Sort-Object LastWriteTime -Descending $backups | ForEach-Object { Write-Host " Archivo: $($_.Name)" Write-Host " Tamaño: $([math]::Round($_.Length / 1MB, 2)) MB" Write-Host " LastWriteTime: $($_.LastWriteTime)" Write-Host " CreationTime: $($_.CreationTime)" } # Si hay backup, verificar fecha de los datos dentro if ($backups.Count -gt 0) { $backupMasReciente = $backups[0] Write-Host "`n=== INFORMACIÓN DEL BACKUP MÁS RECIENTE ===" Write-Host " Archivo: $($backupMasReciente.Name)" # Conectar a SQL y verificar fecha máxima en BonosAfiliado $connString = "Server=localhost;Database=sysdasuten;Integrated Security=true;TrustServerCertificate=yes;" $conn = New-Object System.Data.SqlClient.SqlConnection($connString) $conn.Open() $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT MAX(fecha) as ultima_fecha FROM [BonosAfiliado]", $conn) try { $ultimaFecha = $cmd.ExecuteScalar() Write-Host " ÚLTIMA FECHA EN BonosAfiliado: $ultimaFecha" } catch { Write-Host " ERROR al obtener fecha: $_" } $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [BonosAfiliado] WHERE fecha >= '2026-04-15'", $conn) try { $count15 = $cmd.ExecuteScalar() Write-Host " Registros el 2026-04-15: $count15" } catch { Write-Host " ERROR al contar registros del 15: $_" } $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [BonosAfiliado] WHERE fecha >= '2026-04-14'", $conn) try { $count14 = $cmd.ExecuteScalar() Write-Host " Registros desde 2026-04-14: $count14" } catch { Write-Host " ERROR al contar registros desde 14: $_" } $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [BonosAfiliado] WHERE fecha >= '2026-04-13'", $conn) try { $count13 = $cmd.ExecuteScalar() Write-Host " Registros desde 2026-04-13: $count13" } catch { Write-Host " ERROR al contar registros desde 13: $_" } $conn.Close() } # Verificar fecha de restore en msdb Write-Host "`n=== FECHA DE RESTORE EN msdb ===" $conn = New-Object System.Data.SqlClient.SqlConnection($connString) $conn.Open() $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT TOP 5 destination_database_name, restore_date, backup_start_date FROM msdb.dbo.restorehistory WHERE destination_database_name = 'sysdasuten' ORDER BY restore_date DESC", $conn) $adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd) $ds = New-Object System.Data.DataSet $adapter.Fill($ds) if ($ds.Tables[0].Rows.Count -gt 0) { $ds.Tables[0].Rows | ForEach-Object { Write-Host " Restore: $($_.restore_date)" Write-Host " Backup de: $($_.backup_start_date)" Write-Host " BD: $($_.destination_database_name)" } } else { Write-Host " No hay registros de restore" } $conn.Close() PSCMD DasuExecutor.execute_ps_on_dasu(ps_script) puts "\n✅ Verificación completada"