Files
dtic-DIIAA/adn/tools/cli/verificar_backup_dasu.rb

101 lines
3.7 KiB
Ruby

#!/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"