post icon

Como depurar en SQL Server 2005 paso a paso: Procedimientos almacenados, triggers y funciones

Para todo programador es un paso vital conocer como depurar su software, para la gente que desarrolla con herramientas de Microsoft ésta tarea es bastante sencilla la mayoría de las veces. Especialmente si se trata de depurar las aplicaciones construidas con Visual Studio.

El mayor de los problemas surge cuando hay que depurar objetos de la base de datos, especificamente SQL Server. Para los que en algún momento llegamos a utilizar la versión 2000, el mismo traía un depurador en el Analizador de Querys. Aunque un poco rustico, lo tenía. Cuando salío la versión 2005 del motor, ésta opción fue sacada del producto (el motivo no me lo sé, pero me parece una muy mala idea, es probable que MS quería potenciar su IDE Visual Studio).

A raíz que ya no se puede depurar T-SQL 2005 desde SSMS, podemos hacerlo desde el Visual Studio 2005 o superior. Es posible depurar paso a paso Procedimientos almacenado, funciones, y triggers. Veamos unos ejemplos sencillos pero que ayudarán a comprender la temática.

Lo primero que haremos es abrir Visual Studio y registrar un Servidor de Base de Datos nuevo.

Agregar la conexion

Probar la conexion

Depurando Procedimientos Almacenados

Una vez que tengamos ya registrado, desde el SSMS o Visual Studio creamos el siguiente procedimiento almacenado:

create procedure SP_DEBUG_FOR_DEVTROCE
as
begin
    set NOCOUNT on ;

    declare @VAR INT ;
    declare @var2 VARCHAR(50);
    declare @hoy DATETIME;

    select @VAR = 10 / 2 + 3;
    set @VAR = 12;

    select @var2 = 'Probando el sistema de Debug desde Visual Studio';

    select @hoy = getdate();
end
GO

Este tiene código que realmente no hace mucho ni tiene un objetivo real, a parte el de demostrar como funciona la depuración. Desde el explorador de servidores buscamos el nuevo SP, damos clic derecho sobre él y eligimos la opción “Ir al procedimiento Almacendo

Iniciar Debug

Una vez hecho esto, comenzará el procedo de paso a paso. Con F10 podrán avanzar a la siguiente sentencia. Si el procedimiento invoca a otro SP o función se puede entrar dentro de él y continuar atómica la depuración, esto si presionamos F11. En caso que querramos salir del SP invocado y volver al SP general lo hacemos con CTRL + F11.

Debug

Si dan clic sobre las imagenes verán en tamaño completo, y podrán fijarse que en el Inspector de Variable Locales, se visualizan el estado de las variables utilizadas en cada paso. También pueden usar la ventana de Inmendiato para hacer consultas mas complejas.

Depurando Funciones

También es posible depurar funciones, del tipo que sea. Para el ejemplo usaremos uno de tipo escalar también con contenido sencillo y se fijarán que no varía mucho de la depuración de SP. Creamos la siguiente función:

create function FX_PRUEBA2 ()
returns DATETIME
as
begin
    declare @hoy DATETIME ;

    select
        @hoy = getdate() ;

    return @hoy ;

end
GO

Debug Funcion

El debug se ve abajo:

debug function

Depurando Triggers

Bueno, aquí si tenemos que cambiar un poco el modus operandi porque los triggers no podemos invocarlos (motivo más que obvio) entonces lo que debe hacer es crear un procedimiento almacenado que afecte a la tabla en cuestion y abrir el trigger agregando un punto de parada (breakpoint) en algún punto del mismo.

CREATE TABLE [dbo].[debug](
	[debug] [varchar](50) NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
create trigger ti_debug on dbo.debug
    after insert
as
begin
    set NOCOUNT on ;

    declare @object VARCHAR(50) ;

    set @object = 'depurando un trigger, step 1' ;
    set @object = 'depurando un trigger, step 2' ;

end
GO
create procedure SP_DEBUG_TRIGGER @VALUE VARCHAR(50)
as
begin
    set NOCOUNT on ;

    insert  into dbo.debug
            (debug)
    values
            (@VALUE) ;
end
GO

debug trigger

Nota: Si lo que desean es depurar un query suelto, no podrán hacerlo con las versiones 200o ni 2005, necesariamente deberán crear un procedimiento almacenado temporal para realizar su depuración. En la siguiente entrega veremos los cambios y mejoras que nos trae SQL Server 2008 para estos fines.

Comentarios desde Facebook:

  1. avatar
    Alfons Taboada SPAIN Google Chrome Windows
    4 octubre 2011 at 04:47 #

    Muy bien. Me ha funcionado a la primera. Explicación rápida, sencilla y práctica

  2. avatar
    Joel Castillo CHILE Mozilla Firefox Windows
    12 abril 2011 at 08:50 #

    Lo intenté pero me dio el siguiente error amigos:

    “No se puede iniciar la sesión de depuración de T-SQL.No se puede conectar con el proceso de SQL Server en ‘nombreServidor’.Haga clic en Ayuda para obtener”

    Sin embargo si tengo conexión con el servidor y la base de datos, puedo abrir el SP, pero no puedo entrar con la opcion IR A SP, alguna idea?

    Mis saludos

Responder