SQLShack
La depuración es una de las partes más importantes pero dolorosas de cualquier proceso de software. Para encontrar algunos errores, debe ejecutar el código paso a paso para ver qué sección del código es responsable del error. Esto se denomina depuración en tiempo de ejecución.
Afortunadamente, SQL Server Management Studio (SSMS) viene con capacidades de depuración automatizadas para ayudar a los desarrolladores a depurar sus scripts. En este artículo, explicaremos prácticamente cómo se pueden usar SSMS para depurar procedimientos almacenados en SQL Server trabajando a través de un ejemplo muy simple.
Ejemplo
Para nuestro ejemplo, usaremos un procedimiento almacenado «spShowOddNumbers» que toma dos números como parámetros e imprime todos los números impares entre esos dos números especificados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
CREAR PROCEDIMIENTO spShowOddNumbers
@LowerRange INT,
@UpperRange INT
COMO
BEGIN
MIENTRAS(@LowerRange < @UpperRange)
BEGIN
if(@LowerRange%2 != 0)
BEGIN
PRINT @LowerRange
END
SET @LowerRange = @LowerRange + 1
END
PRINT ‘NÚMEROS IMPARES IMPRESOS ENTRE’ + RTRIM(@lowerRange) + ‘ y ‘ + RTRIM(@UpperRange)
FIN
|
El script que llama al procedimiento almacenado en SQL Server:
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
CAÍDA de PROC spShowOddNumbers
|
opciones de Depuración
En SQL Server Management Studio, usted tiene una variedad de opciones de depuración.
Iniciar depuración
Para iniciar la depuración de un procedimiento almacenado de SQL server en SQL Server, pulse ALT + F5 o vaya a Debug – > Iniciar depuración, como se muestra en la siguiente figura:
Después de iniciar el depurador en la ventana donde está llamando a su procedimiento almacenado en SQL Server, verá que habrá un cursor amarillo al inicio de la ventana de consulta, como se muestra a continuación:
Ahora que ha comenzado a depurar, puede recorrer el código.
Paso a través del Script
Hay tres opciones para pasar por el código: 1) Paso, 2) Paso y 3) Paso. Puede ver estas opciones haciendo clic en Depurar como se muestra en la captura de pantalla a continuación:
- Paso por encima (F 10)
Paso por encima simplemente mueve el cursor a la siguiente línea de script ejecutable. Por ejemplo, si el depurador se encuentra en la siguiente ubicación del script:
Al hacer clic en Paso por encima o al presionar F10, simplemente mueve el cursor a la siguiente línea:
- Paso a (F 11)
Esta es una de las características de depuración más importantes y útiles. Step Into le permite entrar en el script de procedimiento almacenado desde el script que llama a ese procedimiento almacenado.
Es importante mencionar que Step Into funciona como Step Over. Si la línea de script que se está ejecutando no contiene ninguna llamada al procedimiento almacenado en SQL Server.
Por ejemplo, si entras en:
1SET @upperrange = 20El depurador simplemente mueva el control a la siguiente línea:
1EXEC spShowOddNumbers @lowerrange, @upperrangeLa línea de arriba contiene una llamada al procedimiento almacenado en SQL Server. Ahora, si entras en esta línea de script, el depurador te llevará al script del procedimiento almacenado ‘spShowOddNumbers’ como se muestra en la siguiente figura.
- Salir (Shift + F11)
Salir es lo opuesto a entrar. Si se encuentra dentro de un procedimiento almacenado en SQL Server y desea volver al script que llama al procedimiento almacenado, puede usar Step Out. Por ejemplo, si hace clic en Paso a paso en:
1MIENTRAS QUE(@LowerRange & lt; @UpperRange)El depurador lo llevará de vuelta al script que llama a la función, es decir,
Ejecutar a Cursor
Las opciones de depuración ejecutan una línea a la vez. Si hay un bucle o un fragmento de código largo que desea que su depurador omita, puede usar la opción «Ejecutar al cursor».
1
|
MIENTRAS QUE(@LowerRange < @UpperRange)
|
Por ejemplo, si el cursor se encuentra en la siguiente línea del procedimiento almacenado en SQL Server y desea omitir el bucle e ir a la instrucción print después del bucle. Simplemente puede ir a la instrucción print y hacer clic en «Ejecutar al cursor» como se muestra a continuación:
El bucle se saltará y el cursor ahora apuntará a la instrucción print.
La ventana local
La ventana local le ayuda 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. Al inicio del bucle while en el procedimiento almacenado en SQL Server, el valor de la variable @LowerRange es 5, mientras que la variable @UpperRange es 20, como se muestra en la siguiente figura:
Una vez que ejecute el bucle y luego verifique el valor de las variables, verá que las variables @LowerRange y @UpperRange mostrarán 20 como su valor. La ventana Locales muestra el Nombre, el Valor y el tipo de la variable. El uso de la ventana Locales hace que sea muy sencillo realizar un seguimiento de los cambios en los valores de sus variables a medida que avanza a través del script.
Si cierra la ventana Local accidentalmente y desea recuperarla, simplemente vaya a Depurar – > Windows – > Locales, como se muestra a continuación:
La ventana del reloj
La ventana del reloj es muy similar a la ventana Local. La única diferencia es que puede agregar o eliminar variables de la ventana de vigilancia, lo que puede ser útil cuando se trabaja con un gran número de variables en scripts más grandes.
Para agregar una variable a la ventana de Reloj, simplemente seleccione la variable, haga clic con el botón derecho y luego seleccione «Agregar reloj» como se muestra en la siguiente captura de pantalla:
Del mismo modo, para eliminar una variable, haga clic con el botón secundario en el nombre de la variable en la ventana de Reloj y haga clic en «Eliminar reloj» de la lista de opciones. Como se muestra a continuación:
La pila de llamadas
La Pila de llamadas, como su nombre indica, muestra la pila de llamadas que se han ejecutado hasta el punto actual.
La primera línea de la Pila de llamadas en la figura anterior, nos dice que actualmente se está ejecutando el procedimiento almacenado spShowOddNumbers y que en este momento el depurador se encuentra en la línea 14 del archivo que contiene este procedimiento almacenado. La segunda línea indica que este procedimiento almacenado fue llamado desde el script en la línea 7 del SQLQuery2.archivo sql.
La ventana inmediata
La ventana inmediata es similar a la ventana de la consola. Por ejemplo, puede realizar operaciones matemáticas dentro de la ventana Inmediata, 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
Un punto de interrupción es una de las herramientas de depuración más utilizadas en cualquier lenguaje de programación. El punto de interrupción le permite especificar la ubicación en la que desea que el depurador deje de ejecutar el código. Son particularmente útiles cuando no desea depurar todas las líneas de código, sino que desea verificar el estado de las variables en ubicaciones específicas de su código.
Para poner un punto de interrupción en su código, simplemente haga clic con el botón derecho en el área gris al lado izquierdo de la línea del script donde desea poner su punto de interrupción. Alternativamente, al pulsar F9 se añadirá automáticamente un punto de interrupción a la línea. Al pulsar de nuevo la tecla F9, se eliminará el punto de interrupción.
Puede ver en la figura anterior que se ha agregado un punto de interrupción a la línea que ejecuta el procedimiento almacenado «spShowOddNumbers» en SQL Server. Ahora, depura este script. Verá que el depurador comenzará en la primera línea del script.
Ahora presione ALT + F5 o vaya al menú de depuración de nuevo y haga clic en Depurar – > Continuar. Verá que en lugar de depurar la siguiente línea, el depurador saltará directamente a la línea más cercana con el punto de interrupción.
También puede crear puntos de interrupción condicionales. Los puntos de interrupción condicionales solo se alcanzan cuando se cumplen las condiciones especificadas.
Para especificar una condición en el punto de interrupción, simplemente haga clic con el botón derecho en el punto de interrupción y seleccione «Condiciones» como se muestra en la siguiente figura:
Se abrirá una nueva ventana en la que podrá especificar las condiciones que se deben cumplir antes de que se alcance un punto de interrupción. Si desea que este punto de interrupción solo se alcance cuando @LowerRange sea mayor que 15, puede agregarlo como condición, como se muestra en la imagen siguiente:
Conclusión
En este artículo, analizamos las diferentes opciones que ofrece Microsoft SQL Server Management Studio para depurar un script o procedimiento almacenado en SQL Server.
Otros excelentes artículos de Ben
Cómo usar funciones integradas de SQL Server y crear funciones escalares definidas por el usuario
Cómo usar funciones de ventana
Depurar procedimientos almacenados en SQL Server Management Studio (SSMS)
- Autor
- Publicaciones recientes
Ver todas las publicaciones de Ben Richardson
- Trabajar con temas de informes de Power BI-25 de febrero de 2021
- Power BI: Gráficos en Cascada y Efectos visuales combinados-19 de enero de 2021
- Power BI: Formato condicional y colores de datos en acción-enero 14, 2021