de Volta para: O SQL Server Tutorial Para Iniciantes e Profissionais
Como Aumentar os Erros Explicitamente no SQL Server
neste artigo, Eu estou indo para discutir como aumentar os erros explicitamente no SQL Server com alguns exemplos, junto com o também vamos discutir as diferentes opções que podemos usar com Raiserror no SQL Server., Por favor, leia o nosso artigo anterior onde discutimos o exemplo em tempo real da função do sistema de erro Raise. Como parte deste artigo, vamos discutir as seguintes indicações.
- Como Criar erros explicitamente no servidor SQL?
- erro de RAISERROR usando a declaração de RAISERROR no servidor SQL
- erro de Raise usando a declaração de lançamento no servidor SQL
- Qual é a diferença entre a função de RAISERROR e a declaração de lançamento?
- compreender a declaração de erro com a opção Log.
- Como Criar erros armazenando a mensagem de erro na tabela SysMessage.,
como criar erros explicitamente no servidor SQL?
geralmente, erros levantados em um programa por razões predefinidas, como dividir um número por zero, violação da chave primária, violação da verificação, violação da integridade referencial, etc. Mas se quisermos, então também podemos criar um erro em seus programas de duas maneiras diferentes.,
- instrução Raiserror
- instrução throw (nova funcionalidade do SQL Server 2012)
Raiserror Sintaxe: Raiserror (errorid/errormsg, GRAVIDADE, estado)
jogar Sintaxe: Jogar errorid, errormsg, estado
Exemplo: Aumentar o erro usando a instrução RAISERROR no SQL Server.
no seguinte procedimento armazenado, levantamos um erro quando a divisão é 1 usando a declaração RAISERROR.,
Exemplo de execução: EXEC spDivideBy1 10, 1
Exemplo: Aumentar o Erro usando a instrução throw no SQL Server.
o procedimento acima também pode ser reescrito com a ajuda de uma declaração de lançamento no lugar de Raiserror como segue.,
EXECUÇÃO: EXEC spDivideBy2 10, 1
Qual é a diferença entre RAISERROR função e instrução throw?
se usarmos qualquer uma das duas afirmações de um programa para criar um erro sem tentar e pegar blocos, RAISERROR statement depois de aumentar o erro continuará a execução do programa, enquanto throw statement irá terminar o programa anormalmente nessa linha., Mas se eles são usados sob bloco tentativa ambos se comportarão da mesma maneira que é saltará diretamente para pegar bloco de onde o erro foi levantado.
a declaração RAISERROR dará uma opção de especificar a gravidade da mensagem de erro, enquanto que não temos esta opção no caso de declaração de lançamento onde todas as mensagens de erro terão uma gravidade padrão de 16.,
Em caso de RAISERROR, há uma chance de gravar a mensagem de erro no arquivo de log do servidor usando a opção com log, enquanto que não podemos fazer isso em caso de uma declaração de lançamento.
Em caso de lançamento, precisamos especificar tanto a mensagem de erro como a mensagem de erro para aumentar o erro, enquanto que em caso de RAISERROR podemos especificar o id ou a mensagem., Se o id não for especificado padrão erro id é 50000, mas se quisermos especificar apenas erro id primeiro precisamos adicionar a mensagem de erro na tabela sysmessage, especificando um id único para a tabela.
opções com Declaração de RAISERROR:
com Log: usando esta opção na declaração de RAISERROR podemos gravar a mensagem de erro no ficheiro de registo do servidor SQL de modo que, se os erros forem fatais, o administrador da base de dados possa ter o cuidado de corrigir esses erros.,
se a gravidade do erro for superior a 20 especificando a opção com Log é obrigatória. Para testar esta ALTERA o procedimento spDivideBy1 alterando a instrução raiserror como a seguir
RAISERROR (‘DIVISOR NÃO pode SER UM’, 16, 1) COM o LOG
Abaixo, o procedimento completo
Agora, execute o procedimento e sempre que o dado de erro aumenta, podemos observar as mensagens de erro registadas em SQL Server arquivo de log. Para ver o ficheiro de Registo., No object explorer, vá para o nó de gerenciamento de log do servidor SQL e abra o arquivo de log atual, fazendo duplo-click nele como mostrado abaixo.,g
RAISERROR (“O NÚMERO %d NÃO pode SER DIVIDIDO POR %d’,16, 1, @No1, @No2)COM o LOG
Angariação de Erros Por armazenar a mensagem de Erro na SysMessage tabela:
podemos gerar um erro, sem dar a mensagem de erro na instrução RAISERROR, mas no lugar da mensagem de erro precisamos especificar o id do erro e para especificar o id do erro que precisamos para registro de identificação de erro com a mensagem de erro na SysMessage tabela usando o sistema de definição de procedimento “SP_ADDMESSAGE”., 16, ‘DIVIDIR POR UM ERRO ENCONTRADO’
Agora alterar o procedimento, alterando a instrução RAISERROR como a seguir
RAISERROR (51000,16, 1)COM REGISTO
Excluir as mensagens de erro de tabela sysmessages:
Sintaxe: SP_DROPMESSAGE <identificação do erro>
Exemplo: EXEC sp_dropMessage 51000
No próximo artigo, vou discutir o try-catch execução no SQL Server para lidar com o erro no SQL Server., Aqui, neste artigo, eu tento explicar como criar erros explicitamente no servidor SQL passo a passo com alguns exemplos.