Capitulo 9 - Lección 1: Manejabilidad de las características de Microsoft SQL server

Como desarrollador de bases de datos, puede que tenga que extender sus soluciones de bases de datos más allá de simplemente devolver los datos de consulta para una aplicación front-end. Por ejemplo, es posible que necesite enviar informes por correo electrónico a los usuarios. Este capítulo trata sobre varias características de Microsoft SQL Server 2008 que le permiten difundir y gestionar los datos en su base de datos de manera eficiente. Características que se describen incluyen Database Mail, Windows PowerShell, y change tracking. SQL Server 2005 introduce Database Mail, y SQL Server 2008 continúa el apoyo para el correo de la base de datos que le permite enviar mensajes de correo electrónico desde y hacia el servidor que ejecuta SQL Server. En SQL Server 2008, Microsoft introdujo Windows PowerShell para administrar tecnologías compatibles con los objetos de administración SQL Server (SMO).

Lección 1: Integración de Database Mail
Con SQL Server 2005, Microsoft introdujo Database Mail para que el servicio SQL Server para enviar mensajes de correo electrónico. Mediante el uso de Database Mail , usted puede desarrollar aplicaciones de bases de datos que envían los resultados de la consulta y los archivos adjuntos a los usuarios. Analizaremos cómo utilizar el procedimiento almacenado de sistema sp_send_dbmail.

Vista general de Database Mail
Database Mail permite a los administradores y desarrolladores que envíen mensajes de correo electrónico generados por el servicio de SQL Server. En SQL Server 2005, Database Mail se introdujo para sustituir a SQLMail. SQLMail se incluye en SQL Server 2008 sólo por compatibilidad con versiones anteriores. Uno de los principales beneficios de Database Mail es que se comunica mediante el protocolo SMTP y no requiere una extensión compatible con MAPI (aplicaciones de correo electrónico), como Microsoft Office Outlook, en el servidor que ejecuta SQL Server. Además, el correo de bases de datos proporciona tolerancia a fallos mediante el soporte de varios servidores SMTP y SMTP múltiples con cuentas de usuario y perfiles.

Configuración de Database Mail (Más información AQUI)
Aunque la configuración de Database Mail es tradicionalmente una función de la función de administrador de base de datos, una breve reseña se ofrece aquí como información general. Usted puede utilizar SSMS para iniciar el Asistente para configuración de Database mail.
Nota: habilitando Database mail: Para reducir al mínimo los problemas de seguridad de su servidor, Database mail está desactivada por defecto. Si se define Database mail mediante el uso de “Database Mail Configuration Manager”, Database mail está habilitada como parte del proceso de configuración. Además, puede utilizar Surface Area Configuration Policy-Based Management  o el sistema de procedimiento almacenado sp_configure para habilitar Database mail en uno o más servidores.
Para configurar Database mail, debe realizar los siguientes pasos:
  1. Abra SSMS y conéctese a la instancia de SQL Server que desea configurar.
  2. En el Explorador de objetos, expanda la carpeta Administración, haga clic en Correo de bases de datos, y seleccione Configuración de Database Mail, como se muestra en la figura siguiente:

    image
  3. En la página Configuración de la base de datos mail de bienvenida del asistente, revise la información y haga clic en Siguiente.
  4. En la página Configuración de tareas de selección, seleccione la primer opción (Set up Database Mail by performing the Following Tasks) y haga clic en siguiente:
    image
    Nota: Una vez que Database Mail se ha configurado, el asistente de configuración se puede utilizar para administrar la configuración.
  5. Si un mensaje de advertencia SSMS se indica que la función de correo de base de datos no está disponible, haga clic en Sí para habilitar esta característica. Si Service Broker se ha inhabilitado en la base de datos msdb, debe detener el Agente SQL Server (si se está ejecutando) y habilitar Service Broker en la base de datos msdb antes de poder habilitar Database Mail
  6. En la página Nuevo perfil, escriba un nombre de perfil descriptivo y una descripción en los campos correspondientes.
  7. En la sección Cuentas de SMTP, haga clic en Agregar para crear una cuenta nueva base de datos de correo.
  8. En la ventana Nueva base de datos de cuentas de correo, añadir la información que corresponde a la cuenta de SMTP que el servicio de SQL Server va a utilizar, y haga clic en Aceptar. Siguiente figura muestra la entrada de la muestra. Reemplazar esta información con información de la cuenta válida para el servidor.
    image
  9. En la página de perfil nuevo, compruebe la información de configuración, a continuación, haga clic en Siguiente.
  10. En la página Administrar perfil de seguridad, configurar los perfiles adecuados públicos o privados, a continuación, haga clic en Siguiente.
  11. En la página Configurar parámetros del sistema, revisar los parámetros por defecto del sistema, realizar los cambios necesarios y haga clic en Siguiente.
  12. En la página Finalización del asistente, haga clic en Finalizar.
  13. Verificar que la configuración tubo éxito, a continuación, haga clic en Cerrar.
Envío de mensajes de Correo electrónico mediante Database Mail
Puede utilizar las características de Database Mail para integrar los mensajes de correo electrónico en sus aplicaciones.
Por ejemplo, puede agregar al sistema el procedimiento almacenado sp_send_dbmail al final del procedimiento almacenado que la aplicación utiliza al añadir un nuevo cliente a la base de datos de crédito para enviar un mensaje de correo electrónico al supervisor de crédito con la información agregada del nuevo cliente .
El procedimiento almacenado de sistema sp_send_dbmail se utiliza para enviar mensajes de correo electrónico desde el servicio de SQL Server a destinatarios de correo electrónico. Este comando tiene las opciones que le permiten definir el estándar de e-mail los campos del mensaje, tales como A:, CC:, CCO: y Asunto:, junto con más opciones específicas de SQL Server (por ejemplo, la consulta que se ejecuta) para proporcionar flexibilidad al crear aplicaciones de SQL Server que necesitan enviar mensajes de correo electrónico. El sistema de almacenado sp_send_dbmail procedimiento incluye los siguientes argumentos:
  • @profile_name: Especifica el nombre del perfil de correo desde el que se envió el mensaje. Si no hay ningún perfil de correo predeterminado existe, debe incluir @profile_name. Si no hay ninguno en la lista, el sistema en el primer intento utiliza el perfil privado predeterminado para el usuario actual.
    Si el usuario actual no tiene un perfil privado predeterminado, el sistema utiliza el perfil público predeterminado para la base de datos msdb.
  • @recipients: Especifica los destinatarios del mensaje de correo electrónico. La lista completa de direcciones de correo electrónico debe estar encerrado entre comillas simples, y puntos y comas deben separar las direcciones.
    Este campo es opcional, pero si los receptores @recipients, @copy_recipients, and @blind_copy_recipients son todos en blanco, falla el comando.
  • @copy_recipients: Especifica las direcciones de correo electrónico de los destinatarios que se incluirán en el campo CC. La lista completa de direcciones de correo electrónico debe estar encerrado entre comillas simples, y puntos y comas deben separar las direcciones
  • @blind_copy_recipients: Especifica las direcciones de correo electrónico de los destinatarios que se incluirán en el campo CCO. La lista completa de direcciones de correo electrónico debe estar encerrado entre comillas simples, y puntos y comas deben separar las direcciones.
  • @subject: Especifica el valor que se incluirán en el Asunto: “título del e-mail”. Si no se especifica nada, el titulo será "Mensaje de SQL Server”. El titulo debe ser encerrado entre comillas simples.
  • @body: Especifica el contenido del mensaje, debe ir entre comillas simples.
  • @body_format: Especifica si el cuerpo del mensaje es "TEXT" o "HTML". El tipo de formato predeterminado es TEXT.
  • @importance: Ajusta el nivel de importancia del mensaje en 'Low', 'Normal' o ''High'. Si no se especifica, la importancia por defecto es "Normal".
  • @sensitivity: Ajusta el nivel de sensibilidad de los mensajes en  'Normal', 'Personal', 'Private', o "Confidential". El valor predeterminado es "Normal".
  • @file_attachments: Especifica una lista de nombres de archivo separados por comas que desea adjuntar al mensaje. La lista completa se debe encerrar entre comillas simples.
  • @query: Define una consulta que el sistema ejecuta. Puede incluir los resultados de la consulta en el cuerpo del mensaje de correo electrónico o como archivo adjunto. La consulta completa se encuentra dentro de comillas simples.
  • @execute_query_database: Especifica el contexto de base de datos para la consulta. Este argumento se ignora si no se especifica @ query.
  • @attach_query_result_as_file: Especifica si el resultado de la consulta se incluyen como un archivo adjunto o en el cuerpo del mensaje de correo. Un valor de 1 especifica un archivo adjunto será utilizado. Un valor de 0 especifica el resultado de la consulta seguirá el contenido especificado en el argumento @body. Este argumento se ignora si no se especifica @ query. Si no incluye esta opción, los resultados de la consulta se devuelven en el cuerpo del mensaje de correo electrónico.
  • @query_attachment_filename: Especifica el nombre del archivo adjunto resultante de una consulta. Esta opción requiere comillas si el nombre del archivo incluye una extensión de nombre de archivo (como. Txt) u otros caracteres no permitidos. Si @attach_query_result_as_file se establece en 1 y este parámetro no se incluye, el correo electrónico establece el nombre de archivo predeterminado. El argumento @query_attachment_filename se ignora si el argumento @attach_query_result_as_file no se especifica o se establece en 0 o @query no está definido.
  • @query_result_header: Se establece en 1 o 0 para especificar si los encabezados de columna se incluyen en el conjunto de resultados. El valor predeterminado es 1, que especifica que se debe incluir encabezados de columna. Este argumento se ignora si no se especifica @ query.
  • @query_result_width: Especifica el número de caracteres que se incluirán en una sola línea en el formato del conjunto de resultados. El valor predeterminado es de 256 caracteres, pero se puede establecer esta opción para cualquier cosa entre 10 y 32767. Este argumento se ignora si no se especifica @query.
  • @query_result_separator: Especifica el carácter que se utiliza para separar las columnas en el conjunto de resultados. El valor predeterminado es un espacio.
  • @exclude_query_output: Se establece en 0 o 1 para especificar si los mensajes de consulta de error como el que se muestra en la Figura 9.3 se muestran en el monitor. Un valor de 0 incluye el mensaje de error de consulta en el monitor, y un valor de un informe en el monitor sólo que el comando se ha completado con éxito, incluso si la consulta en el procedimiento almacenado no.
    image
  • @append_query_error: Especifica si un mensaje de correo electrónico está siendo enviado, cuando se produce un error de consulta. La configuración por defecto de 0 significa que la base de datos de correo no envía el mensaje de correo electrónico cuando la consulta produce un error. Cuando el valor se establece en 1, Database Mail envía el mensaje de correo electrónico y añade el mensaje de error en el correo electrónico como se muestra en la Figura siguiente. Este ajuste también afecta al comportamiento del argumento @exclude_query_output.
    image
  • @query_no_truncate: Se establece en 0 o 1 para especificar si grandes columnas de longitud variable en el conjunto de resultados se truncan. El valor por defecto de 0 trunca las columnas a 256 caracteres. Si el valor se establece en 1, que no trunca grandes columnas de longitud variable, títulos de las columnas que no están incluidos, y se necesitan recursos adicionales para ejecutar la consulta.
  • @mailitem_id [ OUTPUT ]: Establece una variable de salida opcional para devolver el mailitem_id del mensaje.
La siguiente consulta envía un mensaje de correo electrónico a student@Adventure-Works.com que tiene el titulo de “Job Candidate Resumes”. El mensaje incluye un archivo adjunto llamado Candidate_resumes.txt. Este documento incluye los resultados de una consulta con las columnas JobCandidateID y Resume de la tabla HumanResources.JobCandidate en la base de datosAdventureWorks2008. Los datos XML recuperados de la columna  no se truncan.
El archivo de texto generado se muestra en la Figura posterior:
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'student@Adventure-Works.com',
@query =
'SELECT JobCandidateID
, Resume from HumanResources.JobCandidate' ,
@subject = 'Job Candidate Resumes',
@execute_query_database = 'AdventureWorks2008',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Candidate_resumes.txt',
@query_no_truncate = 1;
y el archivo adjunto que se genera es este:
image
Comandos en desuso: SQL Server 2008 incluye xp_sendmail, así como una serie de procedimientos adicionales obsoletos solo para apoyar SQLMail y compatibilidad hacia atrás. Usted no debe usar SQLMail en el desarrollo de nuevos porque el apoyo se quitará en una versión futura de SQL Server. Se debe implementar Database Mail en los nuevos proyectos. Además,usted debe comenzar a convertir el código existente en Database Mail.
Gestión de Database Mail (Más información AQUI)
Aunque por lo general la configuración de Database Mail cae en la función de administrador de bases de datos, puede utilizar el siguiente sistema de procedimientos almacenados para modificar o solucionar problemas de configuración que afectan a los mensajes que están enviando a sus aplicaciones:
  • sysmail_configure_sp: Configura los parámetros como el tamaño máximo de archivo permitido para los archivos adjuntos, las extensiones de archivos prohibidas que no pueden ser enviados como archivos adjuntos, y la configuración de reintentos.
  • sysmail_help_configure_sp: Muestra la configuración actual para el correo de la base de datos.
    EJ: image
  • sysmail_help_queue_sp: Muestra información sobre el estado y las colas de correo. Puede utilizar este procedimiento almacenado para solucionar los mensajes que no se recibieron.
  • sysmail_delete_mailitems_sp: Elimina mensajes de correo electrónico de forma permanente a partir de tablas de Database Mail en en la base de datos msdb. Estos mensajes se pueden eliminar en función de su estado o la fecha en que se envió el mensaje. Los archivos adjuntos de los  mensajes eliminados también se eliminarán, pero los sucesos registrados asociados deben ser eliminados de forma independiente mediante el uso del procedimiento sysmail_delete_log_sp.
  • sysmail_delete_log_sp: Borra las entradas de forma permanente de los registros de la base de datos de correo.
    Estas entradas se pueden eliminar en función de su estado o la fecha en que se envió el mensaje asociado. Los mensajes de correo electrónico asociados con las entradas del registro eliminado debe ser eliminado de forma independiente mediante el uso del procedimiento sysmail_delete_mailitems_sp.
  • sysmail_start_sp: Inicia la Database Mail a partir de los objetos asociados de service Broker.
  • sysmail_stop_sp: Detiene Database Mail al detener los objetos de servicio asociados Broker. Puede utilizar este procedimiento almacenado para solucionar problemas de Database Mail mediante la detención temporal de la tramitación de los mensajes en las colas de Database Mail. El procedimiento almacenado sp_send_dbmail sigue funcionando, mientras que los objetos de Service Broker están detenidos.
Resumen de la lección
  • Database Mail se introdujo en SQL Server 2005 y debe ser usado en lugar de SQL Mail.
  • Database Mail está desactivado por defecto para reducir al mínimo la superficie de el servidor.
  • Usted debe utilizar el procedimiento de sistema almacenado sp_send_dbmail para integrar la base de datos de correo con sus aplicaciones.
  • Una amplia variedad de argumentos le permite personalizar los mensajes de correo electrónico y archivos adjuntos enviados desde el servidor de bases de datos.

No hay comentarios:

Publicar un comentario