SQLShack

a depuração é uma das partes mais importantes mas dolorosas de qualquer processo de software. Para encontrar alguns erros você tem que executar o código passo a passo para ver qual seção do código é responsável pelo erro. Isto é chamado de depuração em tempo de execução. Felizmente, o SQL Server Management Studio (SSMS) vem com capacidades automatizadas de depuração para ajudar os desenvolvedores a depurar seus scripts. Neste artigo, vamos explicar praticamente como o SSMS pode ser usado para depurar procedimentos armazenados no servidor SQL, trabalhando através de um exemplo muito simples.

exemplo

para o nosso exemplo, vamos usar um procedimento armazenado “spShowOddNumbers” que leva dois números como seus parâmetros e imprime todos os números ímpares entre esses dois números especificados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CRIATE 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

o programa que chama o procedimento armazenado no servidor SQL:

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

opções de Depuração

No SQL Server Management Studio, você tem uma variedade de opções de depuração.

Iniciar a Depuração

Para começar a depurar um procedimento armazenado do SQL server no SQL Server, pressione ALT + F5, ou ir para Depurar -> Start Debugging, como mostrado na figura abaixo:

Começar a depurar um procedimento armazenado no SQL

Começar a depurar um procedimento armazenado no SQL

Depois de iniciar o depurador na janela em que você chamar o procedimento armazenado no SQL Server, você vai ver que não vai ser de um amarelo cursor no início da janela de consulta, como mostrado abaixo:

começando a depurar um procedimento armazenado na posição do cursor SQL-amarela

começando a depurar um procedimento armazenado na posição do cursor SQL - amarelo

agora que começou a depuração, poderá passar pelo código.

passar através do Script

há três opções para passar através do código: 1) passo acima, 2) Passo Dentro e 3) passo fora. Poderá ver estas opções se carregar em Depurar, como é mostrado na imagem abaixo:Depuração do servidor SQL – Step out

depuração do servidor de SQL-sair
  1. passo sobre (F 10)

    passo sobre simplesmente move o cursor para a próxima linha de script executável. Por exemplo, se o depurador estiver no seguinte local do programa:

    depuração do servidor de SQL-passo sobre-antes

    SQL Server debugging-Step over-before

    se carregar em Step Over ou carregar em F10 simplesmente move o cursor para a linha seguinte:

    depuração de SQL Server - Passo - depois de

    a depuração de SQL Server - Passo - depois de
  2. Step Into (F 11)

    Este é um dos mais importantes e úteis funcionalidades de depuração. O passo em permite-lhe entrar no script de procedimento armazenado a partir do script que chama esse procedimento armazenado.

    é importante mencionar que passo em obras como passo mais. Se a linha de script a ser executada não contiver qualquer chamada para o procedimento armazenado no servidor SQL.

    por exemplo, se entrar em:

    1
    SET @upperrange = 20

    O depurador de simplesmente mover o controle para a próxima linha:

    1
    EXEC spShowOddNumbers @lowerrange, @upperrange

    A linha acima contém uma chamada para o procedimento armazenado no SQL Server. Agora, se você entrar nesta linha de script, o depurador irá levá-lo para o script de ‘spShowOddNumbers’ procedimento armazenado, como mostrado na figura seguinte.

    depuração do servidor SQL-passo para

    depuração do servidor de SQL-entrar
  3. Step Out (Shift + F11)

    Step Out é o oposto de Step Into. Se você está dentro de um procedimento armazenado no servidor SQL e você quer voltar para o script que chama o procedimento armazenado você pode usar Step Out. Por exemplo, se você clicar em Step Over em:

    1
    ENQUANTO(@LowerRange &lt; @UpperRange)

    O depurador irá levá-lo de volta para o script que chama a função i.e.

    depuração de SQL Server - Passo

    a depuração de SQL Server - Passo

Executar até o Cursor

opções de Depuração de executar uma linha de cada vez. Se existir um loop ou um pedaço longo de código que deseja que o seu depurador salte, poderá usar a opção ‘Executar até ao Cursor’.

1
ENQUANTO(@LowerRange < @UpperRange)

Por exemplo, se o cursor estiver na linha seguinte do procedimento armazenado no SQL Server e você deseja ignorar o loop e vá para a instrução após o loop. Você pode simplesmente ir para a instrução de impressão e carregar em “Executar até ao Cursor”, como mostrado em baixo:

depuração do servidor SQL-executar até ao cursor

a execução de depuração do servidor SQL até ao cursor

o ciclo será ignorado e o seu cursor irá agora apontar para a instrução de impressão.

a janela Local

a janela local ajuda – o a controlar os valores das variáveis no programa. Neste exemplo, temos duas variáveis @LowerRange e @UpperRange em nosso script. No início do ciclo while no procedimento armazenado no servidor SQL O valor da variável @LowerRange é 5 enquanto a variável @UpperRange é 20 Como mostrado na figura abaixo:

a depuração de SQL Server -o local janela

a depuração de SQL Server -o local janela

uma Vez que você executar o loop e, em seguida, verifique o valor das variáveis que você vai ver que o @LowerRange e @UpperRange variáveis de ambos mostrará 20 como o seu valor. A janela local mostra o nome, o valor e o tipo da variável. Usar a janela local torna muito simples acompanhar as mudanças nos valores de suas variáveis à medida que você progride através do script.

Se você fechar a janela Locals acidentalmente e você deseja trazê-lo de volta, você pode simplesmente ir para Depurar -> Windows> Moradores, como mostrado abaixo:

a depuração de SQL Server - Passo sobre - variáveis locais

A depuração de SQL Server - Passo sobre - variáveis locais

O Relógio Janela

A janela de inspeção é muito semelhante à janela Locals. A única diferença é que você pode adicionar ou remover variáveis da janela de Vigia, que pode ser útil ao trabalhar com um grande número de variáveis em scripts maiores.

Para adicionar uma variável para a janela Watch, basta selecionar a variável, clique com botão direito e selecione “Adicionar Assistir” como mostrado na imagem seguinte:

a depuração de SQL Server no SSMS - adicionar um relógio

a depuração de SQL Server no SSMS - adicionar um relógio

da mesma forma, para remover uma variável, clique com o botão direito do mouse no nome da variável na janela de inspeção e clique em “Excluir Assistir” a partir da lista de opções. Como mostrado abaixo:

depuração de SQL Server no SSMS - a exclusão de um relógio

a depuração de SQL Server no SSMS - a exclusão de um relógio

A Pilha de Chamadas

A Pilha de Chamadas, como o nome sugere, exibe a pilha de chamadas que foram executadas até o ponto atual.

depuração de SQL Server no SSMS - a pilha de chamadas

a depuração de SQL Server no SSMS - a pilha de chamadas

A primeira linha da Pilha de Chamadas na figura acima, diz-nos que, atualmente, o spShowOddNumbers procedimento armazenado é executado e, no momento, o depurador está na linha 14 do arquivo que contém este procedimento armazenado. A segunda linha indica que este procedimento armazenado foi chamado a partir do script na linha 7 do SQLQuery2.ficheiro sql.

a janela imediata

a janela imediata é semelhante à janela do console. Por exemplo, você pode realizar operações matemáticas dentro da janela imediata, verificar os valores das variáveis, etc. A imagem seguinte contém um exemplo de uma janela imediata.Depuração do servidor SQL no SSMS – janela imediata

depuração do servidor SQL no SSMS-janela imediata

Nota: o comando cls limpa a janela imediata!

Breakpoints

um breakpoint é uma das ferramentas de depuração mais usadas em qualquer linguagem de programação. O ponto de paragem permite-lhe indicar a localização onde deseja que o seu depurador pare de executar o código. Eles vêm particularmente útil quando você não quer depurar todas as linhas de código, em vez disso você quer verificar o estado das variáveis em locais específicos em seu código.

para colocar um ponto de paragem no seu código, basta carregar com o botão direito na área cinzenta do lado esquerdo da linha do script onde deseja colocar o seu ponto de paragem. Em alternativa, se carregar em F9 irá adicionar automaticamente um ponto de paragem à linha. Se carregar novamente na tecla F9, irá remover o ponto de paragem.

depuração de SQL Server no SSMS - pontos de interrupção

a depuração de SQL Server no SSMS de Quebra de pontos

Você pode ver na figura acima, que um ponto de interrupção foi adicionado à linha que executa o “spShowOddNumbers” procedimento armazenado no SQL Server. Depurar este script. Você verá que o depurador começará na primeira linha do script.

depuração de SQL Server no SSMS - o depurador começando na primeira linha do script

a depuração de SQL Server no SSMS - o depurador começando na primeira linha do script

Agora pressione ALT + F5 ou vá para o menu debug novamente e clique em Depurar -> Continuar. Você verá que em vez de depurar a próxima linha, o depurador irá saltar diretamente para a linha mais próxima com o ponto de paragem.

depuração de SQL Server no SSMS - adicionar um relógio, Pressione ALT + F5

a depuração de SQL Server no SSMS - adicionar um relógio, Pressione ALT + F5

Você também pode criar pontos de interrupção condicionais. Os pontos de paragem condicionais só são atingidos quando as condições especificadas são cumpridas.

para especificar uma condição no ponto de paragem, basta carregar com o botão direito no ponto de paragem e seleccionar “condições”, como mostrado na figura abaixo:Depuração de um procedimento armazenado no servidor SQL em SSMS-Conditions

Depuração de um procedimento armazenado no servidor SQL em SSMS-Conditions

será aberta uma nova janela onde poderá indicar as condições a satisfazer antes que um ponto de paragem possa atingir. Se quiser que este ponto de paragem só seja atingido quando o @LowerRange for superior a 15, poderá adicionar isto como condição, como mostrado na imagem abaixo.:

Depurar um procedimento armazenado do SQL Server no SSMS - Definição de variáveis para uma condição

Conclusão

neste artigo, discutimos as diferentes opções que o Microsoft SQL Server Management Studio fornece para a depuração de um script ou um procedimento armazenado no SQL Server.

Outros grandes artigos de Ben

Como usar o SQL Server built-in funções e criar escalar definida pelo usuário funções

Como Usar Funções de Janela

Depuração de procedimentos armazenados no SQL Server Management Studio (SSMS)

  • Autor
  • Posts Recentes
Ben Richardson
Ben Richardson é executado Acuidade a Formação de um fornecedor líder de SQL formação do reino UNIDO. Ele oferece uma gama completa de treinamento SQL desde cursos introdutórios até treinamento de administração avançada e armazenamento de dados – veja aqui para mais detalhes. Acuity tem escritórios em Londres e Guildford, Surrey. Ele também blogs, ocasionalmente, sobre a Acuidade do blog
Ver todos os posts por Ben Richardson

Ben Richardson
postagens mais Recentes de Ben Richardson (ver todas)
  • Trabalhando com Energia BI relatório de temas – 25 de fevereiro de 2021
  • fonte de Alimentação BI: Cachoeira Gráficos e Combinado Visuais – janeiro 19, 2021
  • fonte de Alimentação BI: Formatação condicional e cores dos dados em ação-janeiro 14, 2021