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:
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:
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
- 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:
se carregar em Step Over ou carregar em F10 simplesmente move o cursor para a linha seguinte:
- 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:
1SET @upperrange = 20O depurador de simplesmente mover o controle para a próxima linha:
1EXEC spShowOddNumbers @lowerrange, @upperrangeA 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.
- 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:
1ENQUANTO(@LowerRange < @UpperRange)O depurador irá levá-lo de volta para o script que chama a função i.e.
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:
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:
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:
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:
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:
A Pilha de Chamadas
A Pilha de Chamadas, como o nome sugere, exibe a pilha de chamadas que foram executadas até o ponto atual.
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
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.
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.
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.
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
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.:
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
Ver todos os posts por Ben Richardson
- 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