#!/usr/bin/env ruby # frozen_string_literal: true require_relative 'drones/lib/dasu_executor' puts "=== DASU-SQL4 - Estructura de tabla 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] Estructura de la columna idsolicitud:" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'BonosAfiliado' AND COLUMN_NAME = 'idsolicitud' ", $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 " Columna: $($row.COLUMN_NAME)" Write-Host " Tipo: $($row.DATA_TYPE)" Write-Host " Default: $($row.COLUMN_DEFAULT)" Write-Host " Nullable: $($row.IS_NULLABLE)" } else { Write-Host " Columna no encontrada" } Write-Host "`n[2] ¿Es idsolicitud una columna IDENTITY?" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT c.name AS column_name, t.name AS table_name, COLUMNPROPERTY(OBJECT_ID(t.schema_name + '.' + t.name), c.name, 'IsIdentity') AS is_identity, IDENT_CURRENT(t.schema_name + '.' + t.name) AS current_identity, IDENT_INCR(t.schema_name + '.' + t.name) AS identity_increment, IDENT_SEED(t.schema_name + '.' + t.name) AS identity_seed FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE t.name = 'BonosAfiliado' AND c.name = 'idsolicitud' ", $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 " ¿Es Identity?: $($row.is_identity)" Write-Host " Seed (valor inicial): $($row.identity_seed)" Write-Host " Incremento: $($row.identity_increment)" Write-Host " Valor actual (IDENT_CURRENT): $($row.current_identity)" } else { Write-Host " No es columna IDENTITY o no existe" } Write-Host "`n[3] Valores reales de idsolicitud en últimos registros:" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT TOP 20 idsolicitud, fecha, codigoafiliado FROM BonosAfiliado ORDER BY idsolicitud DESC ", $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 " idsolicitud=$($_.idsolicitud) | fecha=$($_.fecha) | afiliado=$($_.codigoafiliado)" } Write-Host "`n[4] ¿Hay registros con idsolicitud > 0?" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT COUNT(*) as c FROM BonosAfiliado WHERE idsolicitud > 0 ", $conn) $c = $cmd.ExecuteScalar() Write-Host " Cantidad: $c" Write-Host "`n[5] ¿Hay registros con idsolicitud = 0?" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT COUNT(*) as c FROM BonosAfiliado WHERE idsolicitud = 0 ", $conn) $c = $cmd.ExecuteScalar() Write-Host " Cantidad: $c" Write-Host "`n[6] Máximo valor de idsolicitud:" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT MAX(idsolicitud) as max_id FROM BonosAfiliado ", $conn) $max = $cmd.ExecuteScalar() Write-Host " MAX(idsolicitud): $max" $conn.Close() PSCMD DasuExecutor.execute_ps_on_dasu(ps_script) puts "\n✅ Verificación completada"