Somos un equipo de desarrolladores de bases de datos de servidores SQL. Nuestros clientes son una mezcla de servicios web C#/ASP.NET, C# y Java, servicios Java/Unix y algunos de Excel.Tratamiento de errores del servidor SQL: excepciones y el contrato cliente-base de datos
Nuestros desarrolladores de clientes solo utilizan los procedimientos almacenados que ofrecemos y esperamos que (cuando sea razonable, por supuesto) los traten como métodos de servicio web.
A algunos de nuestros desarrolladores de clientes no les gustan las excepciones SQL. Los entienden en sus idiomas pero no aprecian que el SQL esté limitado en la forma en que podemos comunicar los problemas.
No me refiero sólo a errores de SQL, como intentar insertar "bob" en una columna int.
También me refiero a excepciones como decirles que un valor de referencia es incorrecto, o que los datos ya han cambiado, o no pueden hacerlo porque su agregado no es cero.
Realmente no tienen ninguna alternativa concreta: han mencionado que debemos generar parámetros, pero suponemos que una excepción significa "procesamiento detenido/revertido".
¿Cómo manejan las personas aquí el contrato cliente-base de datos? Ya sea en general o donde hay separación entre el DB y los monos de código de cliente.
ediciones:
- usamos SQL Server 2005 TRY/CATCH exclusivamente
- registramos todos los errores después de la reversión a una tabla de excepción ya
- nos preocupa que algunos de nuestros clientes ganaron' Verifique los parámetros de salida y suponga que todo está bien. Necesitamos que se marquen los errores para que podamos ver el soporte.
- todo es una excepción ... se espera que los clientes analicen algunos mensajes para separar la información de los errores. Para separar nuestras excepciones del motor de DB y los errores de llamada, deben usar el número de error (los nuestros son todos 50,000 por supuesto)
"nos preocupa que algunos de nuestros clientes no verifiquen los parámetros de salida y suponen que todo está bien. Necesitamos que los errores estén marcados para que la asistencia los pueda ver". ¡No puedo pensar en una forma de hacer esto en T-SQL aparte de enviar un correo electrónico! –
Las rutinas del cliente envían correo electrónico para cualquier excepción (nosotros o ellos) ... nuestra construcción corporativa no permite el correo electrónico de los servidores SQL de ninguna manera ... – gbn