Powershell – Mensaje de error ExecuteNonQuery (Transact-SQL).
Tengo un script de PowerShell que ejecuta scripts SQL en una base de datos de SQL Server utilizando un nuevo objeto Microsoft.SqlServer.Management.Common.ServerConnection como este:
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
Y para ejecutar el script utilizo el método ExecuteNonQuery:
$conn.ExecuteNonQuery($ScriptToRun);
El script puede fallar. Cuando esto sucede, necesito que el script de PowerShell imprima el mensaje de excepción detallado, pero siempre imprime el mismo mensaje genérico: ‘Excepción al llamar a “ExecuteNonQuery” con “1” argumento(s):”Se produjo una excepción al ejecutar una instrucción o lote Transact-SQL.”‘
El manejo de errores se realiza de la siguiente manera:
Catch
{
Write-Output $_.Exception.Message
$conn.RollBackTransaction()
throw $_.Exception
}
¿Hay alguna manera de imprimir el error específico de Transact-SQL que se lanzó?
¡Gracias!
davy.ai
Sí, hay una forma de imprimir el error específico de Transact-SQL que se produjo. Puede modificar el bloque catch en su script de PowerShell para incluir la clase SqlException y acceder a información de error más detallada. Puede hacer esto agregando esta línea al inicio del bloque catch:
Entonces, puede acceder al mensaje de error y al código utilizando las propiedades del objeto SqlException:
Esto le proporcionará información más específica sobre el error que ocurrió. Además, puede agregar registro u otras acciones en el bloque catch para manejar el error de manera más específica, si es necesario.