post icon

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

En el articulo anterior veiamos un mini-tutorial de como depurar en SQL Server 2005. Ahora veremos como hacerlo con SQL Server 2008. Aunque es posible hacerlo del mismo modo, con Visual Studio. La nueva versión nos permite ya depurar desde el SQL Server Management Studio directamente (una caracteristica más que útil y que implorabamos hace años).

La primer diferencia es más que reconocible, ya que se agrega un nuevo menú dentro del SSMS como ven aquí:

Nuevo Menu

Depurando un Procedimiento Almacanado

Para una mayor diferencia utilizaremos los mismos querys que en el articulo anterior,

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

Y para comenzar la depuración invocaremos el SP como lo hacemos tradicionalmente, y presionamos ALT + F5 o vamos al menu y elegimos iniciar depuración.

execute SP_DEBUG_FOR_DEVTROCE;

Al realizar eso, debemos continuar depurando con la tecla F11 para entrar sentencia por sentencia en el SP, y se verán los valores de las variables y otros objetos como lo hacíamos  en Visual Studio.

Debug Stored Procedure

Depurando Funciones

Se realiza nuevamente de modo muy semejante a la depuración de procedimientos, simplemente cambia la invocación.

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

    select
        @hoy = getdate() ;

    return @hoy ;
end

Invocación y presionando de nuevo F11

select dbo.fx_prueba2()

Viendose así:

debug fx

Depurando Triggers

Aqui nuevamente cambia el modus operandi, por no poder invocar el trigger directamente, volvemos a crear un stored procedure o un query suelto que afecte a la tabla.  Incialmente creamos estos objetos:

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

Los invocamos así:

exec dbo.SP_DEBUG_TRIGGER
    @VALUE = 'devtroce'

Con F11 entraremos a depurar el procedimiento almacenado:

Y dentro del procedimiento volvemos a presionar F11 para entrar al trigger de este modo:

debug trigger

Depurando Query’s independientes:

Esta es la mejor parte, podemos depurar por fin ya consultas independientes, sin necesidad de crear procedimientos almacenados u objetos para estos fines como lo haciamos con las versiones anteriores. Vean un ejemplo:

debug query

Comentarios desde Facebook:

  1. avatar
    JavierDt Mozilla Firefox Windows
    19 enero 2013 at 14:44 #

    Hola.

    Sabes si hay alguna forma de evaluar una tabla temporal mientras se depura un SP.

Responder