26 Jan 2016

Dos maneras de manejar errores en SQL Server

Author: Anonym  /  Categories: Technical Training & Certification, Microsoft, SQL Server  /  Rate this article:
5.0

Muchas aplicaciones utilizan procedimientos almacenados en Microsoft SQL Server  sin ningún control de errores en T-SQL en absoluto; en estos casos, el control de errores puede ser manejado por el código de aplicación que llama a los procedimientos almacenados. Sin embargo, hay algunas desventajas con ese enfoque. En primer lugar, puede haber ocasiones en que un procedimiento almacenado no debe proceder en el caso de un error, o cuando una transacción debe revertirse. Además, la aplicación que se consume puede no ser capaz de informar del error con precisión.

La manera tradicional de manejar errores en T-SQL es mediante la comprobación de la variable del sistema @@error. Al hacerlo, es importante darse cuenta de que la variable @@error restablece tan pronto como se le llama. Por lo tanto, si desea informar sobre el error o tenga que hacer algo con él, usted debe declarar otra variable para contener y luego seleccione el error en esa variable, así:

   SELECT @err = @@error
   IF @err <> 0
      PRINT 'Error: ' + ltrim(str(@err))

A partir de SQL Server 2005, puede hacer el control de errores utilizando el estilo try/catch. Además, un número de funciones están disponibles para volver no sólo el número de error, sino también el mensaje de error completo y otra información. He aquí un ejemplo de try/catch control de errores:

   BEGIN TRY
      INSERT myTable(id, name) VALUES (@id, @name)
   END TRY
   BEGIN CATCH
      PRINT 'Error No.: ' + ltrim(str(error_number()))
      PRINT 'Description: ' + error_message()
   END CATCH

Sea cual sea el estilo que elija, tenga cuidado de no abusar del control de errores. Uno de los peores errores es escribir código que falla en silencio. Si la aplicación que llama piensa que no hubo error, entonces puede proceder como si la operación tuvo éxito, y el error puede ser difícil de atrapar. Asegúrese de probar cualquier tratamiento de errores al forzar un fracaso, por lo que puede determinar cómo responde la aplicación de llamada.

Print

Number of views (6831)      Comments (0)

Please login or register to post comments.

Theme picker

Loader

Contact author

x