docs & tools: Actualización de informes y scripts de migración DASUTEN
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative 'drones/lib/dasu_executor'
|
||||
|
||||
puts "=== DASU-SQL4 - Verificar clave primaria en BonosAfiliado ==="
|
||||
puts ""
|
||||
|
||||
ps_script = <<~PSCMD.strip
|
||||
$ErrorActionPreference = "Stop"
|
||||
$connString = "Server=localhost;Database=sysdasuten;Integrated Security=true;TrustServerCertificate=yes;"
|
||||
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
|
||||
$conn.Open()
|
||||
|
||||
Write-Host "[1] ¿Hay clave primaria en BonosAfiliado?"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("
|
||||
SELECT i.name as index_name, i.is_primary_key, i.is_unique
|
||||
FROM sys.indexes i
|
||||
WHERE i.object_id = OBJECT_ID('dbo.BonosAfiliado') AND i.is_primary_key = 1
|
||||
", $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) {
|
||||
$row = $ds.Tables[0].Rows[0]
|
||||
Write-Host " PK: $($row.index_name) (unique: $($row.is_unique))"
|
||||
} else {
|
||||
Write-Host " NO HAY CLAVE PRIMARIA"
|
||||
}
|
||||
|
||||
Write-Host "`n[2] ¿Hay índices únicos?"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("
|
||||
SELECT i.name as index_name, i.is_unique
|
||||
FROM sys.indexes i
|
||||
WHERE i.object_id = OBJECT_ID('dbo.BonosAfiliado') AND i.is_unique = 1
|
||||
", $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 " Índice: $($_.index_name) (unique: $($_.is_unique))"
|
||||
}
|
||||
} else {
|
||||
Write-Host " NO HAY ÍNDICES ÚNICOS"
|
||||
}
|
||||
|
||||
Write-Host "`n[3] Columnas de la tabla:"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("
|
||||
SELECT c.name, t.name as type_name, c.is_nullable
|
||||
FROM sys.columns c
|
||||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||||
WHERE c.object_id = OBJECT_ID('dbo.BonosAfiliado')
|
||||
ORDER BY c.column_id
|
||||
", $conn)
|
||||
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
|
||||
$ds = New-Object System.Data.DataSet
|
||||
$adapter.Fill($ds)
|
||||
$ds.Tables[0].Rows | ForEach-Object {
|
||||
Write-Host " $($_.name) ($($_.type_name)) nullable=$($_.is_nullable)"
|
||||
}
|
||||
|
||||
Write-Host "`n[4] ¿Hay registros duplicados por (fecha, codigoafiliado, dependencia)?"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("
|
||||
SELECT fecha, codigoafiliado, dependencia, COUNT(*) as duplicados
|
||||
FROM BonosAfiliado
|
||||
GROUP BY fecha, codigoafiliado, dependencia
|
||||
HAVING COUNT(*) > 1
|
||||
ORDER BY duplicados 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) {
|
||||
Write-Host " Hay $($ds.Tables[0].Rows.Count) combinaciones duplicadas"
|
||||
$ds.Tables[0].Rows | Select-Object -First 5 | ForEach-Object {
|
||||
Write-Host " fecha=$($_.fecha) | afiliado=$($_.codigoafiliado) | dep=$($_.dependencia) | count=$($_.duplicados)"
|
||||
}
|
||||
} else {
|
||||
Write-Host " NO HAY DUPLICADOS"
|
||||
}
|
||||
|
||||
$conn.Close()
|
||||
PSCMD
|
||||
|
||||
DasuExecutor.execute_ps_on_dasu(ps_script)
|
||||
|
||||
puts "\n✅ Verificación completada"
|
||||
Reference in New Issue
Block a user