Saltar al contenido

Mejores prácticas de uso de sp_send_dbmail

Presta atención ya que en este tutorial encontrarás la contestación que buscas.

Solución:

Las licencias principales de SQL Server son costosas: usar la CPU de una máquina SQL Server para enviar miles de correos electrónicos no tiene justificación, especialmente cuando hay innumerables mejores opciones en términos de funciones, capacidad de administración, configuración y solución de problemas.

Otro punto es que el estrecho acoplamiento entre las características del correo electrónico y la base de datos hace que la aplicación sea difícil de escalar, aislar y administrar. Un servidor, un servicio.

El correo de la base de datos, en mi opinión, debe usarse solo con fines administrativos (alertas) y no para enviar mensajes de correo electrónico comerciales.

No veo el problema. SQL Server siempre ha querido envolver la lógica empresarial en la base de datos, ya sean procedimientos, código CLR puro, informes, ahora análisis e incluso un buen agente de servicio antiguo.

Tener correo allí tampoco es tan malo. Proporciona un excelente historial de colas y entregas directamente en la base de datos en un formato consultable.

A menos que esté al tanto de una vulnerabilidad actual específica, no hay razón para intentar eliminarla. Seguramente hay mejores cosas que hacer con tu tiempo y sin hacer enemigos, prácticamente estás rogando que lo reemplacen con una solución horrible y luego te culpen a ti. yo no lo haría

En mi humilde opinión, esto no es un problema técnico. Es un problema de carrera y de aprendizaje cuando los retengo.

Intentando complementar las respuestas existentes con nuevos aspectos:

Si sp_send_dbmail se utiliza nunca se puede quitar el acceso a Internet para ese servidor de base de datos.

Además, es un problema de seguridad porque los protocolos de red como SMTP son fuentes comunes de vulnerabilidades. Los usuarios finales de la aplicación ahora podrán hacer que su SQL Server se conecte a través de SMTP a un host bajo su control (ya que presumiblemente ingresan direcciones de correo electrónico). ¿Qué sucede si ese host responde con 1 TB de datos basura? ¿Puede SQL Server manejar eso? Quién sabe. sp_send_dbmail es un componente antiguo. Tal vez sea un código C viejo y malo que intenta analizar los datos de la red.

También diría que lo mejor para los desarrolladores es usar otro idioma para enviar correo. T-SQL no es un lenguaje productivo para tareas de procedimiento.

Puede que les guste la siguiente alternativa: Haz que inserten sus correos en una tabla de cola en la base de datos. Luego, haga que la aplicación sondee esa tabla regularmente y envíe correos desde el código de la aplicación. ¡De esa manera, incluso pueden enviar correos electrónicos de manera transaccionalmente consistente! Eso es extremadamente conveniente. Esto también es fácil de escalar. Puede usar Service Broker para reducir la necesidad de sondeo.

Si para ti ha sido de ayuda este artículo, agradeceríamos que lo compartas con más desarrolladores así contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *