Inicio > Sql 2012 Denali > Control de errores

Control de errores


Control de errores

Algunos de los problemas que ocurrirá durante el tiempo de vida de una aplicación de base de datos no se puede eliminar.

En su lugar, se puede anticipar tantos problemas como sea posible y tomar las acciones apropiadas.

Microsoft SQL Server proporciona control de errores para Transact-SQL que es similar al control de excepciones en los lenguajes Microsoft Visual C# y Microsoft Visual C++.

Tipos de errores: Errores de sintaxis

Hay varias categorías de errores que se pueden tratar. Un error de sintaxis se produce si intenta escribir código que Transact-SQL no permite. Ejemplos son:

Si intenta escribir un operador o una palabra clave en el que no debe ser, el Editor de código se lo mostraré. Aquí está un ejemplo:

001 Control de errores

Este error se debe a que el operador SET, aunque parte de la instrucción de Transact-SQL, se utilizó erróneamente.

002 Control de errores

Si se olvida de escribir algo necesario o requerido, cuando intenta ejecutar el código, se produciría un error

Tipos de errores: Errores de ejecución

Un error en tiempo de ejecución es el que se produce si la aplicación intenta realizar una operación que uno de ambos (Microsoft SQL Server y / o el sistema operativo) no permiten.

Estos errores pueden ser difíciles de solucionar porque a veces no son claras, o lo que sucede es que el error no está claramente identificado o es externo a la base de datos.

Ejemplos de errores en tiempo de ejecución son los siguientes:

– Tratando de ejecutar código que no está disponible o no está definido claramente

003 Control de errores

– Al realizar un cálculo como una división por 0

004 Control de errores

TRY…CATCH ()

El manejo de excepciones es la capacidad de lidiar con los errores que ocurren o pueden ocurrir en una base de datos. El error se llama excepción.

Para ayudarle en el manejo de excepciones, Transact-SQL proporciona una fórmula general.

Se comienza con una sección de la siguiente manera:

BEGIN TRY

Código …..

END TRY

Después de que el bloque TRY, se debe crear otra sección que comienza con BEGIN CATCH y termina con END CATCH:

BEGIN TRY

Código …..

END TRY

BEGIN CATCH

END CATCH

La sección de código que va desde BEGIN CATCH a END CATCH se llama un bloque CATCH.

Aquí les dejo un ejemplo :

005 Control de errores

Una construcción TRY…CATCH detecta todos los errores de ejecución que tienen una gravedad mayor de 10 y que no cierran la conexión de la base de datos.

Un bloque TRY debe ir seguido inmediatamente por un bloque CATCH asociado. Si se incluye cualquier otra instrucción entre las instrucciones END TRY y BEGIN CATCH se genera un error de sintaxis.

Si no hay errores en el código incluido en un bloque TRY, cuando la última instrucción de este bloque ha terminado de ejecutarse, el control se transfiere a la instrucción inmediatamente posterior a la instrucción END CATCH asociada. Si hay un error en el código incluido en un bloque TRY, el control se transfiere a la primera instrucción del bloque CATCH asociado. Si la instrucción END CATCH es la última instrucción de un procedimiento almacenado o desencadenador, el control se devuelve a la instrucción que llamó al procedimiento almacenado o activó el desencadenador.

Recuperar información sobre errores

En el ámbito de un bloque CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH:

ERROR_NUMBER() devuelve el número del error.

ERROR_SEVERITY() devuelve la gravedad.

ERROR_STATE() devuelve el número de estado del error.

ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador donde se produjo el error.

ERROR_LINE() devuelve el número de línea de la rutina que provocó el error.

ERROR_MESSAGE() devuelve el texto completo del mensaje de error. Este texto incluye los valores suministrados para los parámetros reemplazables, como longitudes, nombres de objetos u horas.

Aquí un ejemplo:

006 Control de errores

007 Control de errores

Niveles de gravedad

Cuando el Motor de base de datos de SQL Server muestra un error, la gravedad del error indica el tipo de problema detectado por SQL Server.

008 Control de errores

Mensajes de Error definidos por el Sistema y definidos por el Usuario.

Agregar mensajes de error definidos por el usuario a la instancia de SQL Server.

La tabla sys.messages contiene una fila por cada mensaje de error definido por el usuario y mensajes integrados en la instancia de SQL Server.

Los mensajes de error integrados son aquellos que se plantearon en respuesta a los errores estándar de SQL Server.

Los mensajes de error definidos por el usuario se utilizan comúnmente en aplicaciones de terceros, que definen un conjunto de mensajes de error para usarse dentro de una aplicación. Los mensajes de error definidos por el usuario permiten la parametrización, lo que significa que puede crear sus propios mensajes, los cuales permitirán una personalización basada en parámetros.

Aquí les dejo un ejemplo :

Crearemos un mensaje en 2 idiomas.

009 Control de errores

Como eliminar un mensaje de error, esto se realiza con la siguiente sintaxis:

010 Control de errores

Visualizando la Información de Error del Sistema, para esto puede utilizaremos  la vista del catálogo de sistema sys.messages. como se muestra a continuación.

011 Control de errores

Así como usted puede escribir varias declaraciones en el código, también se pueden crear varias secciones de excepción.

Estos son algunos ejemplos:

012 Control de errores

Se puede crear un código de manejo de excepciones dentro de otro. Esto se conoce como de anidamiento.

Aquí les dejo un ejemplo:

013 Control de errores

SQL Server 2012 introduce la instrucción THROW que permite lanzar excepciones de usuario. Además podemos utilizarlo dentro del CATCH para lanzar la excepción. Por tanto, algunas funcionalidades de RAISEERROR quedarán obsoletas con la aparición del THROW.

Aquí  les dejo un ejemplo:

014 Control de errores

 

RegresarAlTutorial

Categorías:Sql 2012 Denali
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: