Es importante indicar que la depuración de los parámetros de cualquier tema es una de las partes más importantes pero dolorosas y laboriosas de cualquier proceso de software. Por ello es importante encontrar esos algunos de esos errores. Es por ello que debe ejecutar el código paso a paso para ver qué sección del código es responsable del error. Esta acción ejecutada de esta manera se llama depuración en tiempo de ejecución.
Debido a este tema, por suerte y de manera oportuna, SQL Server Management Studio (SSMS) viene con capacidades de depuración automatizadas para ayudar a los desarrolladores a depurar sus scripts. Por esta razón en este artículo, explicaremos de manera muy didáctica y practica cómo se puede utilizar SSMS para depurar los procedimientos almacenados en SQL Server mediante un ejemplo muy simple.
Ejemplo
Para nuestro ejemplo, deberemos utilizar un procedimiento almacenado “spShowOddNumbers” que elige y toma dos números como sus parámetros e imprime todos aquellos números impares entre esos dos números especificados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE PROCEDURE spShowOddNumbers @LowerRange INT, @UpperRange INT AS BEGIN WHILE(@LowerRange < @UpperRange) BEGIN if(@LowerRange%2 != 0) BEGIN PRINT @LowerRange END SET @LowerRange = @LowerRange + 1 END PRINT 'PRINTED ODD NUMBERS BETWEEN ' + RTRIM(@lowerRange) + ' and ' + RTRIM(@UpperRange) END |
El script que llama al procedimiento almacenado en SQL Server es el siguiente:
1 2 3 4 5 6 7 8 9 |
DECLARE @lowerrange INT SET @lowerrange = 5 DECLARE @upperrange INT SET @upperrange = 20 EXEC spShowOddNumbers @lowerrange, @upperrange DROP PROC spShowOddNumbers |
Opciones de depuración
En SQL Server Management Studio, muestra que tiene una variedad de opciones de depuración
Iniciando la depuración y limpieza
Para iniciar la depuración, debemos iniciar por medio de un procedimiento almacenado del servidor SQL en SQL Server, para este fin presione ALT + F5, o vaya a Depuración -> Posteriormente debe Iniciar la depuración, como se muestra en la figura a continuación:
A continuación, luego de iniciar el depurador en la ventana donde está llamando a su procedimiento almacenado en SQL Server, usted verá que habrá un cursor amarillo al inicio de la ventana de consulta tal como se muestra a continuación:
Ahora que se ha comenzado a depurar, se puede recorrer el código.
Verificando y revisando el guion
Es importante mencionar que hay tres opciones para revisar el código: 1) Saltar, 2) Entrar y 3) Salir. Claramente se Puede ver estas opciones haciendo clic en Depurar como se muestra en la siguiente captura de pantalla:
- Paso (F 10)
Utilizando el comando Step Over simplemente mueve el cursor a la siguiente línea de script ejecutable. Por ejemplo, en caso de que el depurador está en la siguiente ubicación en el script:
Al hacer clic en Pasar o presionar F10 simplemente mueve el cursor a la siguiente línea:
- Entrar (F 11)
Claramente se puede observar que esta es una de las funciones de depuración más importantes y útiles. Por ello Step Into le permite acceder al script de procedimiento almacenado desde el script que llama a ese procedimiento almacenado.
Es importante mencionar que Step Into funciona como Step Over. Por ello si la línea de script que se ejecuta no contiene ninguna llamada al procedimiento almacenado en SQL Server.
Por ejemplo, si entras en:
1SET @upperrange = 20El depurador simplemente moverá el control a la siguiente línea:
1EXEC spShowOddNumbers @lowerrange, @upperrangeEso muestra que la línea anterior contiene una llamada al procedimiento almacenado en SQL Server. Por ello, si ingresa en esta línea de script, el depurador lo llevará y conducirá al script del procedimiento almacenado “spShowOddNumbers” tal como se muestra en la siguiente figura.
- Salir (Shift + F11)
Por otro lado, Step Out es lo contrario de Step Into. Si está dentro de un procedimiento almacenado en SQL Server y desea volver al script que llama al procedimiento almacenado, es importante mencionar que puede usar Step Out. Por ejemplo, si hace clic en Step Over en:
1WHILE(@LowerRange < @UpperRange)Entonces el depurador lo llevará de regreso al script que llama a la función, es decir
Manejo y ejecución de opciones del cursor
Las opciones de depuración muestran una ejecución de una línea a la vez. Si hay un bucle o un fragmento de código largo que desea que su depurador se debe omitir y luego, puede usar la opción “Ejecutar en cursor”.
1 |
WHILE(@LowerRange < @UpperRange) |
Por ejemplo, en el caso de que si el cursor está en la siguiente línea del procedimiento almacenado en SQL Server y consiguientemente desea omitir el bucle e ir a la instrucción de impresión después del bucle. Lo que puede hacer Simplemente es ir a la declaración de impresión y hacer clic en “Ejecutar en cursor” tal como se muestra a continuación:
Ahora se saltará el bucle y luego su cursor apuntará a la declaración de impresión.
La ventana local
Es importante indicar que La ventana local le permitirá y ayudará a realizar un seguimiento de los valores de las variables en el script. En este ejemplo, tenemos dos variables @LowerRange y @UpperRange en nuestro script. Por ello, al iniciar el ciclo while en el procedimiento almacenado en SQL Server, el valor de la variable @LowerRange es 5, mientras que la variable @UpperRange es 20, tal como se muestra en la siguiente figura:
Por ello una vez que ejecute el ciclo y posteriormente se verifique el valor de las variables, se podrá ver que las variables @LowerRange y @UpperRange mostrarán a 20 como su valor. Adicionalmente la ventana local muestra el Nombre, el Valor y el Tipo de la variable. El uso de la ventana Locals hace que sea muy simple poder realizar un seguimiento de los cambios en los valores de sus variables a medida que avanza en el script.
En el caso de que cerrara la ventana de Locals accidentalmente y se desearía recuperarla, simplemente vaya a Depurar -> Windows -> Locals tal como se muestra a continuación:
La ventana de verificación y de vigilancia
La ventana Watch es muy similar a la ventana Locals. Por ello es importante mencionar que la única diferencia que se tiene es que puede agregar o eliminar variables de la ventana Watch, lo que puede ser útil cuando se trabajan con grandes cantidades de variables en scripts más grandes.
Para agregar una variable en la visualización de la ventana Watch, simplemente seleccione la variable, haga clic en el botón derecho y luego seleccione “Agregar Watch” tal como se muestra en la siguiente captura de pantalla:
Recuerde que es importante en el caso que se tenga que, para eliminar una variable, haga clic con el botón derecho en el nombre de la variable en la ventana Watch y haga clic en “Eliminar Watch” de la lista de opciones. Tal como se muestra abajo:
La cantidad acumulada de las llamadas
La Pila de llamadas, como su nombre lo indica, muestra la cantidad apilada de llamadas que se han ejecutado hasta el punto actual.
La primera línea del conjunto de llamadas en la figura anterior, nos dice que actualmente el procedimiento almacenado spShowOddNumbers se viene ejecutando y en este momento el depurador está en la línea 14 del archivo. El mismo que contiene el referido procedimiento almacenado. Cabe mencionar que la segunda línea indica que se llamó a este procedimiento almacenado desde el script en la Línea 7 del archivo SQLQuery2.sql.
La ventana immediate
La ventana Immediate es similar a la ventana de la consola. Por ejemplo, usted puede realizar una gran variedad de operaciones matemáticas dentro de la ventana Inmediata, luego podrá verificar los valores de las variables, etc. La siguiente captura de pantalla contiene un ejemplo de una ventana inmediata.
Nota: ¡el comando cls borra la ventana inmediata!
Puntos de interrupción y corte
Es importante mencionar que un punto de interrupción o breakpoint es una de las herramientas de depuración más utilizadas en cualquier lenguaje de programación. El punto de interrupción (Breakpoint) le permite especificar la ubicación donde desea que su depurador deje de ejecutar el código. Por ello los breakpoints son especialmente útiles cuando no se desea depurar todas las líneas de código, sino por el contrario lo que se desea es verificar el estado de las variables en ubicaciones específicas de su código.
Para poner un breakpoint en su código, simplemente haga clic en el botón derecho en el área gris al lado izquierdo de la línea del script donde se desea colocar breakpoint. Por ello, de manera alterna se debe presionar F9 lo que agregará automáticamente un breakpoint a la línea. Al presionar la tecla F9 nuevamente se eliminará el breakpoint.
Recuerde que se puede ver en la figura anterior que se ha agregado un breakpoint a la línea que ejecuta el procedimiento almacenado “spShowOddNumbers” en SQL Server. Consiguientemente ahora, depure este script. Verá que el depurador comenzará en la primera línea del script.
Ahora presione ALT + F5 o de lo contrario vaya al menú de depuración nuevamente y haga clic en Depurar -> Continuar. Entonces usted vera que, en lugar de depurar la siguiente línea, lo que el depurador realizará es que saltará directamente a la línea más cercana al breakpoint
Vale la pena mencionar que también se pueden crear breakpoints condicionales. Estos puntos de interrupción condicionales se alcanzarán solo cuando se cumplan las condiciones especificadas.
Para especificar una condición en el punto de ruptura, simplemente haga clic en el botón derecho en el punto de ruptura y seleccione “Condiciones” tal como se muestra en la figura a continuación:
Entonces se abrirá una nueva ventana donde usted puede especificar las condiciones que deben cumplirse previamente y antes de que pueda alcanzar un breakpoint. Si adicionalmente usted desea que este breakpoint solo se alcance cuando @LowerRange es mayor que 15, usted puede agregar esto como una condición, tal como se muestra en la imagen a continuación:
Conclusión
Recuerde que, en este artículo, mostramos y explicamos sobre qué diferentes opciones ofrecen Microsoft SQL Server Management Studio para depurar un script o procedimiento almacenado en SQL Server.
Otros grandes artículos de Ben
Cómo usar las funciones integradas de SQL Server y crear funciones escalares definidas por el usuario |
Cómo usar las funciones de ventana |
Depuración de procedimientos almacenados en SQL Server Management Studio (SSMS) |
- Cómo usar las funciones de Windows en SQL Server - December 16, 2019
- Como comprender el tipo de datos GUID en SQL Server - September 30, 2019
- Cómo utilizar las funciones integradas de SQL Server y crear funciones escalares definidas por el usuario - September 30, 2019