Anda di halaman 1dari 38

Captulo 8: Automatizacion de tareas administrativas

Contenido
Administracin basada en directivas .................................................................................................. 4 Targets ............................................................................................................................................. 5 Facets .............................................................................................................................................. 5 Condiciones (Conditions) ................................................................................................................ 5 Directivas (Policies) ......................................................................................................................... 6 Categoras de las directivas ............................................................................................................. 8 Directivas efectivas ......................................................................................................................... 9 Ejercicio 1: Creando una directiva de nombrado (IDE) ................................................................... 9 Administracin central de servidores ............................................................................................... 13 Ejercicio 2: Creando un grupo de servidores (IDE) .................................................................... 14 Database Mail ................................................................................................................................... 16 Como funciona: ............................................................................................................................. 16 Ejercicio 3: Como configurar Database Mail (IDE) ........................................................................ 17 Configurando las opciones de Database Mail ............................................................................... 23 Administrando perfiles y cuentas ................................................................................................. 23 Sysmail_add_profile_sp ............................................................................................................ 24 Creando un nuevo perfil............................................................................................................ 24 sysmail_add_account_sp .......................................................................................................... 25 Creando una cuenta nueva ....................................................................................................... 25 sysmail_add_profileaccount_sp ................................................................................................ 26 Sysmail_update_profile_sp ....................................................................................................... 27 Sysmail_update_account_sp..................................................................................................... 27 Sysmail_update_profileaccount_sp .......................................................................................... 28 Sysmail_add_principalprofile_sp .............................................................................................. 28 Sysmail_update_principalprofile_sp ......................................................................................... 31 Sysmail_delete_principalprofile_sp .......................................................................................... 31

Sysmail_delete_profileaccount_sp ........................................................................................... 31 Sysmail_delete_account_sp ...................................................................................................... 32 Sysmail_delete_profile_sp ........................................................................................................ 32 Directrices para la eliminacin de objetos Mail ............................................................................ 32 Enviando mail ................................................................................................................................ 32 Sp_send_dbmail ........................................................................................................................ 33 Administracin de Mensajes ..................................................................................................... 38

Captulo 8: Automatizacion de tareas administrativas


Ponlo y olvdate!, no sera bueno que la administracin de SQL fuera as de fcil?, desafortunadamente, esta no es una meta realista para la mayora de nosotros. SQL Server es un producto que necesita un mantenimiento regular y monitorear la buena salud y estabilidad de los servidores. Afortunadamente, existen una serie de herramientas disponibles para ayudar al administrador de base de datos a administrar y mantener sus sistemas. Aun mejor existen herramientas que podemos usar para automatizar algunos de los procesos para hacer nuestro trabajo ms fcil. Administrando los SQL servers en nuestras organizaciones puede ser un trabajo de tiempo completo. Siendo realistas, la complejidad de nuestros sistemas de bases de datos y las aplicaciones (tanto en el apoyo y soporte) puede ser abrumadora al principio, pero hay muchas maneras para mantener el sistema en forma. En este captulo conoceremos algunas de las herramientas ms comunes y caractersticas que los administradores de base de datos pueden aprovechar para tomar el control de sus servidores. Administracin basada en directivas Database mail Notificaciones de eventos Agente de SQL Server Planes de mantenimiento de SQL Server

Al iniciar este captulo, entenderemos que lo aprendido servir como introduccin a los temas que cubriremos en captulos posteriores. Respaldos, replicaciones, monitoreo de rendimiento y el Service Broker son solo algunos de los temas que pueden ser administrados o automatizados mediante algunas herramientas. Los ejemplos en este captulo usan el servidor local configurado en los protocolos: Simple Mali Transfer Protocol (SMTP) y Post Office Protocol (POP3). Ambas caractersticas estn disponibles tambin fuera del paquete en Windows Server 2003 y otros. Sin embargo el servidor para POP3 fue eliminado de Windows Server 2008. La configuracin de SMTP y POP3 est fuera de los alcances de este libro.

Administracin basada en directivas


Una de las ms irresistible adiciones a SQL Server 2008 para los administradores de base de datos es la nueva caracterstica de administracin basada en directivas. La administracin basada en directivas permite definir criterios que puedan controlar la creacin de objetos y su comportamiento, as como obtener informacin acerca de objetos que estn fuera de norma. Es tanto una herramienta de gestin automatizada, as como una herramienta de gestin de auditoria. Criterios que pueden controlar la administracin de objetos Si estamos familiarizados con el funcionamiento de los objetos de directivas de grupo en el Active Directory, es algo similar en el que tenemos una amplia variedad de propiedades que pueden ser configuradas, bloqueadas o reportadas. Todas las directivas de administracin estn configuradas desde el Management folder del servidor en SQL Server Management Studio. Como podemos ver en la imagen existen diferentes tipos de objetos administrables: directivas, condiciones y facetas (policies, conditions and facets).

Por defecto, no se instalan directivas, sin embargo existen algunas plantillas de directivas que son incluidas con la instalacin de SQL Server. Podemos importar estas directivas desde el directorio de instalacin, en su respectiva ruta dentro de \100\Toolt\Policies\DatabaseEngine\1033. Estas directivas estn deshabilitadas cuando se importan pero las podemos habilitar y configurar despus. Antes de crear y usar directivas, debemos entender algo sobre los componentes bsicos de la administracin de directivas, estos componentes son: Targets Facets Conditions

Policies Policy categories Effective policies

Targets
Un target es una entidad u objeto que es administrable por una o ms directivas. Un target puede ser un simple ndice o tabla, o cada base de datos en el servidor local. El motor de base de datos por si solo puede ser un target de una directiva. Los Targets tambin se pueden agrupar en conjuntos, como las tablas que pertenecen a un esquema en particular. Por ejemplo podramos tener una directiva que especifique cada tabla en el esquema Person de la base de datos AdventureWorks2008 como un conjunto destino. El objeto o entidad a la que le voy a aplicar la utomatizacion.

Facets
Son colecciones de propiedades que representan toda o alguna porcin de un objeto destino que estn agrupadas basadas en el comportamiento o las caractersticas. Existen 74 facets que estn disponibles desde la instalacin de SQL Server 2008. Incluyen facets para bases de datos, esquemas, logins, tablas y catlogos de texto completo, etc. En algunos casos, una facet puede ser solo un subconjunto de propiedades de otro facet. Por ejemplo la faceta Login incluye propiedades como Nombre, TipoLogin, ContraseaExpirada, FechaCreacion y FechaUltimaModificacion, mientras las opciones de la faceta de Login solo incluyen un subconjunto de esas propiedades excluyendo FechaUltimaModificacion y ContraseaExpirada entre otros. Facets son usados cuando se define una condicin, se describe a continuacin.

Condiciones (Conditions)
Son una o ms expresiones booleanas que estn asociadas con las propiedades de una faceta especfica. Cuando ms de una expresin est definida, podemos decidir si usar el operador AND o el operador OR cuando evaluamos esas expresiones. Por ejemplo, podemos crear una condicin llamada Login Errors, la cual usa la faceta de Login y checa para ver si las propiedades @IsDisabled, @IsLocked o @IsPasswordExpired son verdaderas.

Si importamos las directivas predefinidas de la instalacin de SQL Server, algunas condiciones en las cuales esas directivas estn basadas tambin se aadirn al a instancia del servidor.

Directivas (Policies)
Mediante estas podemos evaluar, configurar o restringir nuestro servidor y los objetos que residen en l. Cada directiva consiste de 5 elementos principales que deben ser definidos. El primero, obviamente, es un nombre nico para la directiva, el segundo una condicin que ser evaluada debe seleccionarse para la directiva. El tercer elemento define los targets contra los que las condiciones sern evaluadas y sobre los cuales las directivas sern aplicadas. El cuarto, debemos elegir el modo de evaluacin que la directiva ejecutar. Dependiendo del tipo de directiva que estemos creando, podemos seleccionar uno de los cuatro modos de evaluacin. Sobre demanda: la directiva debe ejecutarse manualmente Sobre cambio: evitar: usa disparadores DDL para evitar que un evento de incumplimiento se produzca, esto podra ser muy til si, por ejemplo, deseamos estandarizar las convenciones de nombres en ciertos tipos de objetos. Esta opcin ser especficamente para prevenir cuando un objeto no cumpla con las reglas de nombrado desde su creacin. Sobre cambio: Solo registro: Usa disparadores DDL para registrar un evento de incumplimiento, pero no previene su ejecucin.

Sobre calendarizacin: crea un trabajo del SQL Server Agent, para evaluar automticamente las directivas.

Finalmente podemos definir una propiedad de restriccin del servidor. Esta puede ser til si deseamos evitar la aplicacin de la directiva a una versin especifica de SQL Server o una plataforma en particular, la imagen que se muestra a continuacin muestra un ejemplo de directica que usa la condicin Login Errors y la evala manualmente contra SQL Server 2005 y plataformas ms recientes. Observemos que la casilla de verificacin est en gris. Esto es porque el modo de evaluacin sobre demanda esta seleccionado. Si cambiaramos el modo de evaluacin de la directiva, podemos habilitar esta parte de la operacin programada.

Categoras de las directivas


En la pgina de descripcin de la directiva, podemos establecer propiedades adicionales que permitan administrar de mejor manera las directivas en nuestro servidor. Con las directivas por defecto importadas, podemos ver una lista disponible de las mejores prcticas de Microsoft o podemos crear las propias, como se muestra en la siguiente figura.

Las bases de datos pueden asignarse a alguna categora, esto significa que todas las directivas dentro de esa categora sern automticamente evaluadas sobre las base de datos. Una directiva solo puede pertenecer a una categora, sin embargo una sola base de datos puede pertenecer a ms de una directiva. Esto se hace dando clic derecho sobre la base de datos, eligiendo Policies del men contextual y seleccionando Categories. Veremos un cuadro de dialogo que enlista todas las categoras de directivas disponibles a las que podemos suscribir la base de datos. Por default, las directivas estn forzadas al nivel de servidor, automticamente se aplican a todas las bases de datos. Esto pude ser administrado dando clic derecho en el nodo de Policy Management en el explorador de objetos eligiendo Manage Categories. Deseleccionando la opcin Mandate Database para la categora que permitiremos suscribir bases de datos individuales.

En la figura anterior vemos que podemos agregar texto descriptivo as como informacin adicional en el campo de Help hyperlink. Esto permitir proveer una referencia a un URL que contenga ms informacin acerca de la directiva en s. Por ejemplo, si creamos una directiva que requiere una convencin de nombres especfica para ciertos objetos, podramos incluir una URL para el documento que defina dicha directiva.

Directivas efectivas
Son todas las directivas que sern aplicadas a un objeto, cumpliendo con tres criterios: La directiva debe estar habilitada. Las reglas que no estn dentro de las directivas configuradas en su ejecucin como OnDemand. El target identificado, como una tabla, debe pertenecer al conjunto de objetivos de esa directiva. Una directiva de login no tendra efecto en una tabla. El target o el objeto padre en la jerarqua de targets, debe estar suscrito a una categora de directivas que contengan directivas efectivas, esto significa que una directiva puede aplicarse a una tabla o su esquema, base de datos o servidor.

Ejercicio 1: Creando una directiva de nombrado (IDE)


En este ejemplo, crearemos una nueva directiva que especifica la convencin de nombres para las tablas que pertenecen al esquema dbo de la base de datos Pubs. Usaremos esto para prevenir la creacin de nuevas tablas que no cuentan con esta condicin de directiva, as como tener el conteo de las tablas que existen y que no cumplen con esta directiva. 1. Comenzaremos creando una nueva Policy Condition llamada NombresTablasCondicion. Daremos clic derecho sobre la carpeta Conditions y seleccionaremos New Condition. 2. Pondremos como nombre NombresTablasCondicion y seleccionaremos Multipart Name para la faceta. Nombre con varias partes 3. Para la primera fila de la lnea de expresin elegiremos @Name para el campo. 4. Elige Like como operador. 5. Escribe PubName_% en el campo de valor. 6. Agrega una nueva fila usando el operador OR 7. Elige @Schema para el valor de campo. 8. Establezca el operador a !=. 9. Escriba dbo para el valor del campo. Clic OK para crear la nueva condicin. 10. Clic derecho en la carpeta Policies en el explorador de objetos en la opcin New Policy 11. Escribiremos NombresTablasDirectiva para el nombre de la directiva. 12. En la lista de condiciones, encontramos la condicin NombresTablasCondicion. 13. Tildaremos la opcin Every Table in Every Database, y daremos clic en el la lista desplegable que esta contigua a Database

14. 15. 16. 17. 18. 19. 20. 21.

Elegimos New Condition Ponemos de nombre PubsDB para el nombre de la nueva condicin Elegimos Database en Facet Establecemos el valor de Condition expression a @Name = Pubs y confirmamos. Cambiamos el modo de evaluacin a On change: prevent. Pondremos las restricciones de servidor a none. Marcaremos la casilla Enable debajo de la propiedad Name Damos clic en ok

Ahora probaremos la nueva directiva: 1. Primero, nos aseguraremos que podamos crear una tabla en cualquier esquema que no sea el esquema DBO y que no requiera la convencin de nombres Debe pertenecer al esquema DBO 2. Escribiremos el siguiente cdigo para crear una nueva tabla en el esquema esquemaPrueba: Use Pubs; Create schema esquemaPrueba

10

Create Table esquemaPrueba.table01 ( Col1 char(10), Col2 char(10) ); 3. Enseguida, intentaremos crear una tabla llamada Foo en el esquema dbo usando el siguiente cdigo: Use Pubs; Create Table dbo.table01 ( Col1 char(10), Col2 char(10) ); 4. En este punto la operacin debera fallar, indicndonos que no se obtuvo un nombre esperado, ahora crearemos una nueva tabla que sigue los lineamientos de nombrado. Mediante el siguiente cdigo: Use Pubs Create Table dbo.PubName_Table01 ( Col1 char(10), Col2 char(10) ); Hemos creado una directiva para forzar una convencin especfica para nombrar en un esquema en particular de la base de datos Pubs. A medida que exploremos las diferentes facetas y opciones de condicin, es fcil ver que tan poderoso puede ser el sistema de administracin basado en directivas. Dado que algunos objetos ya existen en el esquema dbo, no satisfacen nuestras convenciones de nombrado, podemos obtener una auditoria sobre las tablas que no cumplen con esta directiva. Debemos recordar que esta directiva solo puede aplicarse a un disparador DDL para objetos nuevos. Objetos existentes seguirn funcionando con normalidad. Para obtener la lista de los objetos que no cumplen, iremos a la directiva llamada NombresTablasDirectiva, daremos clic derecho y daremos clic en Evaluate, se mostrara un resultado parecido a la imagen siguiente:

11

12

Administracin central de servidores


Una de las ms grandes preocupaciones de los DBA es como encontrar la mejor manera para administrar mltiples servidores de una sola vez. Los ejemplos en la seccin anterior en relacin con la administracin basada en directivas, fueron diseadas con una sola instancia, sin embargo, si revisramos algunas de las opciones de administracin basada en directivas (PBM Policy-Based Management), nos daramos cuenta que existen opciones que permiten especificar sobre que plataforma y versin de SQL Server se aplicaran dichas directivas. Cmo puede ser esto? Podramos preguntarnos, si la PBM no exista en versiones anteriores, la respuesta es mediante el uso del Central Management Servers (CMS). Una simple extensin del PBM, el concepto del CMS es permitir no solo directivas, sino tambin consultas que puedan ser ejecutadas en varios servidores a la vez. Esto puede ser extremadamente til, por ejemplo, tenemos una base de datos distribuida a travs de mltiples servidores SQL Server y no estamos seguros en cual servidor en particular se encuentra una fila. Nosotros podramos escribir una consulta que incluya un estatuto Select para todos los servidores, especificando el nombre completo del objeto en una lnea separada, o podramos agregar esos servidores al grupo de CM y ejecutar la consulta en una simple operacin. Existen tambin dos factores clave a consideracin en el CMS Primeramente, el CMS y todos los servidores registrados deben usar la autentificacin de Windows, la creacin de logins SQL y la administracin no ser replicada a travs de los servidores que son miembros del grupo administrador. Otro importante punto a considerar es que el CMS no se contempla a si mismo como un target, esto significa que las directicas que fueron aplicadas al CMS sern aplicadas a los servidores registrados pero no al CMS en s.

Para definir un nuevo CMS necesitaremos navegar hasta la ventada de Registered Servers. Accederemos a esta desde el Management Studio, seleccionando View Registered Server, mostrara 2 categoras: La primera es la categora de grupos de servidor local (Local Server Groups). Aqu podremos aadir una lista de servidores que usualmente administraremos para su fcil acceso, sin tener que conectar el Object Explorer cada vez. Podemos crear carpetas conocidas como Server Groups para el arranque lgico y recoger los servidores que usualmente utilizamos. La segunda categora es donde definiremos el CMS (si hubiera alguno). Despus tendramos que definir un servidor como servidor central de administracin, necesitaremos crear un nuevo grupo de servidores y registrar los servidores que deseamos centralizar para su administracin.

En la siguiente figura podemos ver que existe un nuevo Local Server Group llamado MyServers donde AughtEight es un miembro. Tambin este ltimo se define como Servidor Central de

13

Administracin, con un nuevo grupo llamado Bespin. Este grupo de servidores contiene las instancias: AughtEight\Dagobah y AughtEight\Hoth.

Dando clic derecho sobre el CMS, podemos elegir Evaluate Policies, esta opcin nos permite evaluar una o ms directivas sobre los servidores administrados. Necesitaremos especificar la directiva desde el sistema de archivos o podramos usar una directiva ya existente. En la siguiente figura vemos el resultado de la evaluacin de la directiva Check Bad Logins.

Ejercicio 2: Creando un grupo de servidores (IDE) 1. Men View Registered Servers 2. En la categora CMS clic derecho 3. Register Central Management Server

14

4. 5. 6. 7. 8. 9.

Elegimos el servidor que fungir de servidor central Clic derecho sobre el servidor central New Server Group, escribimos un nombre y aceptamos Clic derecho sobre el grupo creado New server registration, elegimos el servidor y aceptamos Evaluamos directivas para ejemplificar.

15

Database Mail
Microsoft SQL Server 2008 incluye un simple mtodo de mensajera desde y para el SQL Server, esta caracterstica es conocida como Database Mail, permite que el servidor enve y reciba mensajes a travs de SMTP. Uno de los muchos beneficios del servicio SQL Server Database Mail, es que trabaja con cualquier servicio SMTP, independientemente si requiere autentificacin. La funcin de correo de base de datos en SQL Server 2008 es una herramienta que le permite generar y enviar mensajes de correo electrnico de su servidor, que puede ser transmitida a travs de un sistema de correo corporativo. Esto puede proporcionar varias ventajas, incluyendo el uso de un mtodo alternativo para devolver informacin a los usuarios, notificar al personal adecuado que ciertos eventos o condiciones se han cumplido, o proporcionar informacin sobre el estado acerca de los trabajos y los paquetes de SSIS. Database Mail se ha diseado con la seguridad, escalabilidad y fiabilidad en mente. Esta funcin no est incluida con la edicin Express de SQL Server 2008.

Como funciona:
Database Mail utiliza SMTP para la entrega de mensajes. Los mensajes pueden ser generados desde dentro de SQL y se puede incluir archivos adjuntos desde fuera del entorno SQL. Uno de los principales beneficios de Database Mail es la posibilidad de utilizar cualquier servidor SMTP para enviar mensajes. Esta es una mejora significativa con respecto a versiones anteriores de SQL Server que utilizan SQL Mail, que requiere un servidor de correo compatible con MAPI (Microsoft Exchange) y un cliente MAPI (Outlook). SQL Mail, todava existe en SQL Server2008, pero se considera ya en obsolescencia y no deben ser utilizados. Otro beneficio de la base de datos de correo es que le permite configurar las credenciales de autenticacin, si es necesario por el servidor SMTP para reenviar mensajes, as como lo que le permite configurar los distintos servidores de entrega, en caso de que su servidor preferido no est disponible. SQL Server tambin utiliza un ejecutable externo, DatabaseMail.exe, para manejar la entrega de mensajes a un servidor SMTP. Esto permite que el servidor SQL Server se aisl del proceso, de transmisin de los mensajes al servidor SMTP. La base de datos msdb se utiliza para almacenar informacin de configuracin de Database Mail controlando el acceso a la funcin, y los mensajes en cola hasta que estn listos para su entrega. Antes de configurar Database Mail, hay algunas cosas que debemos considerar: En primer lugar, debemos saber que servidores SMTP estn disponibles para su uso y cules son las credenciales necesarias. Como veremos en la siguiente seccin, podemos configurar varios servidores, con mltiples cuentas, si es necesario. Otra consideracin es cuales mensajes sern retenidos, y cuanto tiempo. Por defecto, todos los mensajes enviados y sus archivos adjuntos se almacenan en la base de datos msdb. Debemos ser conscientes de la seguridad de su empresa y las polticas de retencin

16

de mensajes de correo electrnico. Tambin es posible que bajo la obligacin legal conservemos los mensajes durante un perodo especfico de tiempo. La funcin de Database Mail utiliza las cuentas para configurar el acceso a los servidores SMTP y los perfiles para configurar el acceso a cuentas de correo. Sin embargo, los perfiles y las cuentas pueden ser mutuamente excluyentes. Podemos crear cuentas sin una asociacin a un perfil, y se puede utilizar la misma cuenta con varios perfiles, si es necesario.

Ejercicio 3: Como configurar Database Mail (IDE)


La forma ms fcil de configurar DatabaseMail es a travs del asistente en SQL Server Management Studio. 1. Para iniciar el asistente, vaya a la seccin Management de su servidor en el Explorador de objetos.

2. Expanda, haga clic en Database Mail y seleccione Configuracin de Database Mail. 3. La primera pgina que se ve es simplemente una pgina de inicio que se explica cada uno de los pasos. Si usted no desea ver esta pgina, active la casilla de verificacin en la parte inferior de la pgina indicando que desea saltar esta pgina en el futuro. 4. En la siguiente pantalla, se le pedir que identifique las tareas de configuracin que desean realizar. Usted puede usar esto para inicializar la base de datos de correo para su uso en el servidor, o bien, si ya est configurado, puede administrar los perfiles de cuentas de correo y configurar. Tambin puede cambiar la configuracin del sistema. Para este ejemplo, seleccione la primera opcin para configurar el Correo electrnico de base de datos.

17

5. Database Mail est desactivado por defecto. Si esta es la primera vez que ejecuta este asistente y no se ha activado manualmente Database Mail, se le pide que lo habilite. Una vez que haya activado Database Mail, la siguiente pantalla le pedir que proporcione informacin para un perfil de Database Mail nuevo. Escriba un nombre para el perfil y, opcionalmente, una descripcin para ayudar a identificar el perfil y la forma en que se utilizar. Para este ejemplo, introduzca PubsProfile como el nombre del perfil. Una vez que la informacin ha sido ingresada, debe configurar al menos una cuenta que este perfil utilizar. La posibilidad de configurar mltiples cuentas bajo un nico perfil ayuda a garantizar la disponibilidad de la funcin Database Mail para los usuarios que necesitan recibir informacin, y el camino de la entrega no es relevante. El orden en que las cuentas se enumeran determinar el orden de precedencia al enviar mensajes. Cuentas que aparecen en la parte superior de la lista tendrn preferencia. 6. Para crear una cuenta nueva, haga clic en el botn Agregar. En la pantalla Cuenta Nueva de Database Mail (ver figura siguiente), introduzca un nombre de cuenta y la descripcin, y la informacin sobre la cuenta, incluyendo la direccin de correo electrnico la direccin de respuesta, y el nombre o direccin IP del servidor SMTP. Tambin existe un campo

18

donde se puede introducir el nmero de puerto utilizado por el servidor SMTP. A menos que usted sepa que el servidor utiliza un puerto diferente, usted debe utilizar el puerto SMTP estndar de 25. Si el servidor utiliza Secure Sockets Layer (SSL) para proteger los datos en trnsito, seleccione la casilla de verificacin correspondiente.

7. Tambin en la pantalla de nueva cuenta de DatabaseMail, tendr que elegir el mtodo de autenticacin que use el servidor SMTP. De manera predeterminada, la autenticacin annima est seleccionada, pero esto no es el mtodo preferido para la mayora de los servidores SMTP. Si el servidor SMTP est basado en Windows (como en el caso de Microsoft Exchange o IIS) y es miembro del mismo dominio o de un dominio diferente que comparte una relacin de confianza, puede ser capaz de utilizar la autenticacin de Windows con las credenciales de base de datos de servicio del motor. De lo contrario, puede utilizar la autenticacin bsica, proporcionando un nombre de usuario y contrasea manualmente. Tenga en cuenta que si no se utiliza SSL entre el servidor SQL y el servidor SMTP, la informacin de autenticacin puede ser enviada en texto plano y puede ser vulnerable a la interceptacin. En este ejemplo, usaremos un servicio de SMTP instalado

19

en la mquina local a travs de IIS. Usted puede utilizar la informacin de la figura anterior para configurar su cuenta de correo apropiada para su servidor de correo. 8. Una vez que hayas ingresado la informacin sobre la cuenta, haz clic en Aceptar. Podemos ingresar ms cuentas para que sean utilizadas por el mismo perfil, o podemos continuar a la siguiente pantalla. 9. En la pantalla de Administrar perfil de seguridad, puede utilizar la ficha Perfiles pblicos (ver siguiente imagen) para elegir el perfil pblico. Cuando un perfil es pblico, lo que significa es que el perfil estar disponible para todos los usuarios que son miembros del rol DatabaseMailUserRole en el la base de datos msdb. Tambin se puede definir qu perfil pblico es el perfil pblico predeterminado. El valor por defecto es el que se utiliza cuando un perfil no es especificado durante la operacin de envo. Para los perfiles privados, se puede especificar (sobre una base por usuario), que perfiles estn disponibles para que usuario. Cada usuario tambin puede tener un perfil predeterminado a su disposicin. El usuario ya debe existir en la base de datos msdb. Para este ejemplo, marcaremos el perfil como pblico, y lo haremos predeterminado. Una vez que hayamos configurado las opciones de seguridad del perfil, haremos clic en Siguiente.

20

10. En la pgina final del Asistente, puede cambiar los valores de configuracin del sistema para mensajes de correo enviados desde el servidor SQL Server. Podemos identificar la informacin que se muestra en el siguiente tabla:

Opcin
Account Retry Attempts

Descripcin
El nmero de intentos consecutivos que SQL Server puede hacer para la cuenta de mail dentro del perfil antes de cambiar a la siguiente cuenta. Los segundos que SQL Server esperara entre reintentos. Tamao mximo (bytes) de los archivos adjuntos. Enlista las extensiones de archivos que SQL Server no enviara. El valor del tiempo fuera para el ejecutable externo si no existen ms mensajes en la cola. Normal registra solo errores. Extended Errores, Advertensias y mensajes de informacin. Este es la propiedad por default. Verbose logeo extendido ms mensajes de acciones completadas satisfactoriamente y mensajes internos

Account Retry Delay Maximum FileSize Prohibited Attachment File Extensions Database Mail Executable Minimum Lifetime

Loggin Level

21

11. Haga clic en Siguiente para pasar a la ltima pgina del asistente. Una vez que haya proporcionado los valores apropiados para el asistente, se mostrar un resumen con las opciones que ha seleccionado. Al hacer clic en Finalizar se confirmarn los cambios y le dar un informe rpido sobre el xito o fracaso de cada paso.

22

Configurando las opciones de Database Mail


Como alternativa, puede habilitar Database Mail utilizando el procedimiento almacenado sp_configure. Una vez que Database Mail ha sido habilitado, se puede utilizar el procedimiento almacenado sysmail_configure_sp para configurar las propiedades de Database Mail. La sintaxis del procedimiento almacenado sysmail_configure_sp es el siguiente: sysmail_configure_sp [ @parameter_name = ] name , * @parameter_value = ] value , * @description = + description

Parametro
AccountRetryAttempts AccountRetryDelay DatabaseMailExeMinimumLifeTime DefaultAttachmentEncoding MaxFileSize ProhibitedExtensions

Descripcin
El nuemro de intentos reiterados paraha entrar a la cuenta de mail, antes de pasar a la siguiente cuenta Segundos que SQL Server esperara entre reintentos El valor de tiempo fuera para el ejecutable externo si no existen mas mensajes en cola. la codificacin predeterminada para los datos adjuntos. Tamao mximo de bytes del archivo adjunto Lista de las extensiones de archivo que SQL Server no enviar Alguno de los siguientes valores: Normal Extended Verbose

LoggingLevel

El procedimiento almacenado sysmail_configure_sp (al igual que muchos de los procedimientos almacenados de Database Mail) residen en la base de datos msdb. Al ejecutar estos procedimientos almacenados, usted tiene que calificarlos desde el interior de su aplicacin o mediante instrucciones T-SQL. Utilice el siguiente ejemplo para establecer el tamao mximo de archivo para todos los archivos adjuntos enviados por correo de bases de datos a 4 MB: EXECUTE msdb.dbo.sysmail_configure_sp MaxFileSize, 4194303, Max Size 4 MB

Administrando perfiles y cuentas


Los perfiles se utilizan comnmente como unidad de gestin de las cuentas SMTP. Sin embargo, como se mencion anteriormente, no hay una relacin uno-a-uno entre los dos. Puede utilizar el Asistente de configuracin de Database Mail, o puede utilizar una serie de procedimientos almacenados para crear y eliminar perfiles y cuentas, segn sea necesario. Debido a que ya se ha expuesto a los diferentes elementos del Asistente, debe ser fcilmente capaz de que a travs de las diferentes pginas para encontrar lo que necesita para configurar las

23

cuentas y los perfiles que desee. En esta seccin, usted aprender acerca de los procedimientos almacenados que se utilizan para crear y gestionar cuentas y perfiles de Database Mail.

Sysmail_add_profile_sp El primer procedimiento almacenado que debe saber es sysmail_add_profile_sp. Este procedimiento almacenado permite crear un nuevo perfil para ser utilizado por el servicio de correo de base de datos y utiliza la siguiente sintaxis: sysmail_add_profile_sp [ @profile_name = + name , * @description = + desc, [ @profile_id = ] profile_id OUTPUT

Opcin
profile_name Description Profile_id Output

Descripcin
El nombre del perfil Una descripcion opcional Parametro opcional que muestra un unico valor generado por SQL para identificar el perfil Palabra clave para obtener el profile_id

Creando un nuevo perfil El siguiente ejemplo crea un nuevo perfil de mail y retorna un entero como identificador del perfil. DECLARE @profileID INT; EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'PerfilMail01', @description = 'Perfil de prueba creado mediante T-SQL', @profile_id = @profileID OUTPUT ; SELECT @profileID ; El procedimiento almacenado sysmail_help_profile_sp retornar informacin acerca de los perfiles creados en SQL Server, profile_id, name y description, podemos usar las variables: @profile_id o @profile_name para realizar un filtrado. EXEC msdb.dbo.sysmail_help_profile_sp @profile_id=2 Tambin podemos consultar la tabla sysmail_profile en la base de datos msdb para regresar informacin acerca de los perfiles que han sido creados. En complemento a la informacin retornada por el procedimiento sysmail_help_profile_sp, podemos identificar quien modifico la cuenta por ltima vez y cuando. SELECT * FROM msdb.dbo.sysmail_profile

24

sysmail_add_account_sp Para crear una nueva cuenta, utilice el procedimiento almacenado sysmail_add_account_sp. Este procedimiento almacenado crea una cuenta que no se asocia con un perfil. Un procedimiento diferente se puede utilizar para aadir cuentas a un perfil, que se discutir ms adelante en este captulo. La creacin de cuentas, como se ha visto desde el Asistente de Database Mail, es un poco ms compleja que la creacin de perfiles, ya que las cuentas pueden variar de un servidor a otro. La siguiente tabla muestra las opciones que se pueden utilizar con el procedimiento sysmail_add_account_sp:

Parmetro
@account_name = name @email_address = address @display_name = display @replyto_address = address @description = desc @mailserver_name = server @mailserver_type = servertype @port = serverport @username = username @password = password @use_default_credentials = [0|1] @enable_ssl = [0|1] @account_id = accountID OUTPUT

Descripcin
Nombre de la cuenta La direccin mail asociada a la cuenta El nombre mostrado de los mensajes enviados La direccin de contestacin Descripcin opcional Nombre o direccin IP del servidor SMTP que usara la cuenta Para servidores mail de futura tecnologa Puerto TCP usado para el servidor SMTP, default 25 Usado si el servidor SMTP requiere autentificacin Password para la autentificacin con el servidor SMTP Un 1 indica que el servicio de cuentas de SQL Server ser usado para la autentificacin SMTP Un valor de 1 indica que SSL se usara junto con SQL Server y el servidor SMTP. Retorna el id de la cuenta

Creando una cuenta nueva DECLARE @accountID INT; EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'Cuenta01', @description = 'Cuenta de prueba para enviar mails', @email_address = 'gerardo968_1@hotmail.com', @display_name = 'Cuenta de prueba 01', @mailserver_name = 'https://mail.services.live.com/DeltaSync_v2.0.0/sync.aspx', @username = 'gerardo968_1@hotmail.com', @password = '017249', @account_id = @accountID OUTPUT ; SELECT @accountID;

25

Recuerde el ID que se ha generado con el script anterior, ser usado a continuacin. Para obtener ms informacin sobre las cuentas que se han creado, utilice sysmail_help_account_sp. Esto le dar informacin sobre la cuenta, como el ID, el nombre, y las opciones de servidor para esta cuenta. Utilice las variables @account_id o @account_name para limitar los resultados a una determinada cuenta. EXECUTE msdb.dbo.sysmail_help_account_sp Para limitar la salida a la cuenta en la que estamos interesados: EXECUTE msdb.dbo.sysmail_help_account_sp @account_id=2 Podemos mostrar tambien una simple lista de cuentas medante la table sysmail_account: SELECT * FROM msdb.dbo.sysmail_account

sysmail_add_profileaccount_sp Ahora que ha creado un nuevo perfil y una cuenta nueva. Es posible asociar esa cuenta con algn perfil. Recuerde que las cuentas pueden estar asociadas con ms de un perfil, y cada perfil se puede configurar para utilizar ms de una cuenta. Para crear estas relaciones, puede utilizar el procedimiento almacenado sysmail_add_profileaccount_sp. Esto permite que asignar una cuenta a un perfil con el nombre del perfil o id del perfil y el nombre de la cuenta o ID. Otra opcin puede especificar el nmero de secuencia del id de la cuenta. Esto se utiliza para determinar el orden de preferencia para la cuenta dentro de ese perfil. En este primer ejemplo, se utiliza la cuenta creada en el asistente para configuracin de Database Mail y aadiremos al perfil que ha creado desde el ejemplo de procedimiento almacenado sysmail_add_profile_sp. Este ejemplo, utiliza profile_id del PerfilMail01 y el nombre de Cuenta01. Usted puede mezclar y combinar, siempre y cuando se declaren los parmetros correctos. EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_id = 2, @account_name = 'Cuenta01', @sequence_number = 1; En el siguiente ejemplo, se muestra otra manera de agregar la misma cuenta al mismo perfil. EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'PerfilMail01', @account_id =2, @sequence_number =2 ;

26

Para averiguar lo que las asignaciones existentes entre las cuentas y perfiles, podemos usar sysmail_help_profileaccount_sp. Usted puede limitar sus resultados utilizando @ account_id, @account_name, @profile_id o @profile_name. Cada fila devuelta identifica el ID de perfil, el nombre del perfil, el ID de la cuenta, el nombre de cuenta y el nmero de la cuenta. EXECUTE msdb.dbo.sysmail_help_profileaccount_sp Consultar la tabla sysmail_profileaccount en la base de datos msdb devuelve los ID de los perfiles y cuentas asociadas, pero no los nombres. Tambin devuelve el nmero de secuencia de las cuentas y la ltima informacin modificada. SELECT * FROM msdb.dbo.sysmail_profileaccount

Sysmail_update_profile_sp En pocas palabras, puede utilizar este procedimiento almacenado para cambiar el nombre o la descripcin de un perfil existente. Si va a modificar la descripcin del perfil, puede hacer referencia a l utilizando @profile_id o @profile_name. Si desea cambiar el nombre del perfil, utilizar@profile_id. Utilice el siguiente ejemplo para cambiar el nombre y la descripcin del perfil PerfilMail01 creado anteriormente. Asumiendo que usted an no ha creado una cuenta nueva o perfiles distintos de los utilizados en los ejemplos, el profile_id de PerfilMail01 debe ser de 2. EXECUTE msdb.dbo.sysmail_update_profile_sp @profile_id = 2, @profile_name = 'PerfilMailRecargado', @description = 'Perfil de prueba creado y modificado mediante T-SQL' ; EXECUTE msdb.dbo.sysmail_help_profile_sp;

Sysmail_update_account_sp Este procedimiento almacenado se puede utilizar para actualizar las propiedades de una cuenta de correo despus de haber sido creada. A diferencia de los perfiles, las cuentas tienen ms parmetros que se pueden modificar o ajustar segn sea necesario. Los mismos parmetros del procedimiento sysmail_add_account_sp se puede utilizar, pero no los de sysmail_update_profile_sp. En este ejemplo, reconfiguraremos el nombre, replyto_address, y la descripcin del perfil SalesMail. Por desgracia, con este procedimiento almacenado tendr que especificar todos los valores para todos los parmetros, como se muestra aqu: EXECUTE msdb.dbo.sysmail_update_account_sp @account_id = 1,

27

@account_name = 'Cuenta01', @display_name = 'Cuenta de prueba 01 modificada', @replyto_address = 'gerardo968_1@hotmail.com', @description = 'Cuenta de prueba para enviar mails', @mailserver_name = 'https://mail.services.live.com/DeltaSync_v2.0.0/sync.aspx', @mailserver_type = 'SMTP', @port = 25, @username = NULL, @password = NULL, @use_default_credentials = 1, @enable_ssl = 0; EXECUTE msdb.dbo.sysmail_help_account_sp Sysmail_update_profileaccount_sp Si desea cambiar el orden en que las cuentas se utilizarn dentro de un perfil, puede utilizar sysmail_update_profileaccount_sp. Especificaremos el perfil y la cuenta por nombre o el ID, y luego introduzca el nmero de secuencia preferida. Tenga en cuenta que ms de una cuenta en un perfil puede tener el mismo nmero de secuencia. Si este es el caso, SQL arbitrariamente decidir cul de ellas usar. Utilice el siguiente ejemplo para cambiar los nmeros de secuencia de las cuentas en el perfil de PerfilMailRecargado: EXECUTE msdb.dbo.sysmail_update_profileaccount_sp @profile_id = 1, @account_id = 1, @sequence_number = 1; EXECUTE msdb.dbo.sysmail_update_profileaccount_sp @profile_name = 'PerfilMailRecargado', @account_name = 'Cuenta01', @sequence_number = 2; EXECUTE msdb.dbo.sysmail_help_profileaccount_sp Sysmail_add_principalprofile_sp Este procedimiento almacenado se utiliza para controlar el acceso a un perfil de correo. Para que el perfil sea accesible, el perfil se pondr a disposicin de los principals de la base de datos especfica dentro de la base de datos msdb. La siguiente tabla define los parmetros para el procedimiento almacenado sysmail_add_principalprofile_sp:

Opcin
@principal_id @principal_name @profile_id @profile_name

Descripcin
El ID del usuario o rol en la msdb, 0 para rol publico. El nombre del usuario o rol en la msdb, public para un perfil publico El id del perfil El nombre del perfil

28

@is_default

Indica que el perfil, ser el perfil por defecto para el principal especificado.

Vemoslo trabajar, en este ejemplo crearemos un nuevo perfil con una cuenta nueva, despus nos aseguraremos que el perfil sea pblico. -- Create the profile EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'PerfilMail02', @description = 'Perfil de prueba 02'; -- Create the account EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'Cuenta02', @description = 'Cuenta para envio de correo', @email_address = 'gerardo968.1@live.com', @display_name = 'Envio de correo empresarial', @mailserver_name = 'localhost', @use_default_credentials = 1; -- Associate the profile and the account EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'PerfilMail02', @account_name = 'Cuenta02', @sequence_number = 1; -- Make the profile public EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @principal_name = 'public', @profile_name = 'PerfilMail02', @is_default = 0; Para ver la configuracin de seguridad use sysmail_help_principalprofile_sp, podremos especificar el principal_id, principal_name, profile_id y/o profile_name, tenga en cuenta que solo podremos agregar el ID o el nombre pero no ambos. Si deseamos ver cuales perfiles estn disponibles para el rol pblico usaremos: EXECUTE msdb.dbo.sysmail_help_principalprofile_sp @principal_name = 'public'; Curiosamente, si se ejecuta el procedimiento almacenado sysmail_help_principalprofile_sp sin todos los parmetros (como principal_name), devuelve los resultados para la cuenta invitada, no para el rol publico. Esto no es de sorprender, sin embargo, debido a que la cuenta de invitado, cuando est disponible, se utiliza cuando el solicitante no tiene una correlacin de usuarios en la base de datos msdb. En el ejemplo siguiente, aprender a crear un nuevo perfil, la cuenta, y usuario de base de datos llamada UsuarioPruebaMail. A continuacin veremos cmo configurar el nuevo perfil como predeterminado para ese usuario.

29

-- Create the user -- In the real world, you would map this to an existing server credential. USE msdb CREATE USER UsuarioPruebaMail WITHOUT LOGIN; GO -- Create the profile EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'OrderEntry', @description = 'OrderEntry Mail Profile'; -- Create the account EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'Orders', @description = 'Order Entry Primary Mail Account', @email_address = 'orders@adventureworks.com', @display_name = 'AdventureWorks Purchasing Application', @replyto_address = 'administrator@adventureworks.com', @mailserver_name = 'localhost', @use_default_credentials = 1; -- Associate the profile and the account EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'OrderEntry', @account_name = 'Orders', @sequence_number = 1; --Configure the Cuenta02 account as a backup account EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'OrderEntry', @account_name = 'Cuenta02', @sequence_number = 2; -- Make the profile available to the UsuarioPruebaMail user EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @principal_name = UsuarioPruebaMail, @profile_name = 'OrderEntry', @is_default = 1; -- Show which profiles the UsuarioPruebaMail user has access to. EXECUTE msdb.dbo.sysmail_help_principalprofile_sp @principal_name = 'UsuarioPruebaMail'; Una cosa que usted debe tener en cuenta cuando devuelva la lista de perfiles disponibles para el usuario 'UsuarioPruebaMail'es que tanto los perfiles disponibles para la funcin pblica tambin estn disponibles para este usuario. Tambin tenga en cuenta que el rol pblico y el usuario 'UsuarioPruebaMail' tienen un perfil predeterminado. Cuando un usuario de base de datos o un rol que no es pblico, tiene un perfil predeterminado definido, ese perfil ser el que se utiliza si el perfil no se identifica. Si el usuario o la funcin no tienen un perfil predeterminado especificado, el perfil por defecto ser el rol pblico.

30

Sysmail_update_principalprofile_sp Cada principal slo puede tener un perfil predeterminado definido. Si tiene que cambiar, cual perfil ser el predefinido, utilice el procedimiento almacenado sysmail_update_principalprofile_sp. Al igual que con sysmail_add_principalprofile_sp, se puede identificar el principal y el perfil, ya sea por nombre o ID. El nico valor que puede cambiar con este procedimiento almacenado, sin embargo, es el parmetro @ is_default. Usando el ltimo ejemplo, si ha cambiado la opcin @is_default para AWOrderProcessing, entonces el usuario deber especificar manualmente el perfil adecuado. De lo contrario, en este caso, el perfil por defecto que viene es el rol pblico. -- Remove the default profile for UsuarioPruebaMail EXECUTE msdb.dbo.sysmail_update_principalprofile_sp @principal_name = UsuarioPruebaMail, @profile_id = 4, @is_default = 0; -- Show which profiles the UsuarioPruebaMail user has access to. EXECUTE msdb.dbo.sysmail_help_principalprofile_sp @principal_name = 'UsuarioPruebaMail'; Sysmail_delete_principalprofile_sp Si es necesario eliminar la asociacin entre un principal y un perfil, utilice el sysmail_delete_principalprofile_sp. Tenga en cuenta que esto no elimina el principal o el perfil de la de la base de datos, sino que elimina la asignacin explcita entre los dos. Es posible que desee utilizar esta opcin si tiene que eliminar el acceso del rol pblico para el perfil especificado, por ejemplo. La sintaxis requiere identificar tanto el principal como el perfil, pero de nuevo, puede utilizar el nombre o el ID de valor para cualquiera. Utilice el siguiente ejemplo para eliminar el perfil de compra del rol pblico: EXECUTE msdb.dbo.sysmail_delete_principalprofile_sp @principal_name = 'public', @profile_name = 'PerfilMail02'; EXECUTE msdb.dbo.sysmail_help_principalprofile_sp @principal_name = 'public'; Sysmail_delete_profileaccount_sp Si deseamos eliminar una cuenta de un perfil, usaremos sysmail_delete_profileaccount_sp. Necesitaremos especificar el perfil y la cuenta por nombre o ID. El siguiente ejemplo elimina la cuenta Orders del perfil OrderEntry: EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name = 'OrderEntry', @account_name = 'Orders'; EXECUTE msdb.dbo.sysmail_help_profileaccount_sp;

31

Sysmail_delete_account_sp Este, remueve una cuenta de la msdb por completo, usando sysmail_delete_account_sp. Este no eliminara la cuenta, pero todas las referencias a la cuenta y todos los perfiles donde fue configurada, si la cuenta a ser eliminada es la nica cuenta en el perfil, el perfil permanecer, pero vaco. EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = 'Orders'; EXECUTE msdb.dbo.sysmail_help_account_sp; Sysmail_delete_profile_sp Finalmente para eliminar el perfil de la msdb, usaremos sysmail_delete_profile_sp, este eliminara el perfil pero no eliminara las cuentas dentro de l. Esto debido a que las cuentas pueden estar siendo usadas por otros perfiles. EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = 'OrderEntry'; EXECUTE msdb.dbo.sysmail_help_profileaccount_sp;

Directrices para la eliminacin de objetos Mail


Como regla general, tenga cuidado acerca de cmo eliminar las cuentas o perfiles. Si usted va a eliminar una cuenta, perfil, o la asignacin de cuentas, utilice las siguientes directrices: Eliminacin de una asignacin de perfil / cuenta no es destructivo. Simplemente elimina la relacin entre el perfil y su cuenta. Si es necesario, esto se puede volver a crear fcilmente. Si otra cuenta est configurada correctamente en el perfil, esto no debe interrumpir las operaciones. Eliminacin de una cuenta se elimina su disponibilidad en todos los perfiles. Si los perfiles que ya tienen otra cuenta vlida configurada, entonces usted (o sus usuarios) no deberan notar ningn problema. Si usted est borrando una cuenta que es la nica cuenta en uno o ms perfiles, los perfiles no sern capaces de enviar correo. Eliminar un perfil elimina una lista de cuentas configuradas, no las propias cuentas. Sin embargo, si su aplicacin est configurada para utilizar un perfil de correo que hayamos eliminado recientemente, una vez ms, SQL Server no ser capaz de enviar mensajes.

Enviando mail
En este captulo se ha pasado mucho tiempo mirando a los elementos y configuracin de Database Mail, por lo que ahora vamos a ver el envo de correo. Es un proceso fcil. Esta seccin presenta los parmetros del procedimiento almacenado sp_send_dbmail, as como un par de ejemplos tiles de cmo preparar los datos para el envo.

32

Sp_send_dbmail Como se mencion anteriormente, el procedimiento almacenado para enviar correo utilizando la funcin Database Mail es sp_send_dbmail. Al igual que otros procedimientos almacenados de Database Mail cubiertos en este captulo, este vive en la base de datos msdb, y si usted va a ser una instancia desde el exterior de la base de datos tendr que calificarlo, como lo han estado haciendo durante todo el captulo. Tenga en cuenta que a pesar de un perfil de correo se puede hacer pblico y estar disponible para los miembros del rol pblica, el sp_send_dbmail slo pueden ser ejecutado por los miembros del rol DatabaseMailUserRole. Asegurese que todos los logins que necesitan tener acceso al procedimiento almacenado sp_send_dbmail se asignan a un usuario en la base de datos msdb y son miembros de la DatabaseMailUserRole. La siguiente tabla identifica los diferentes parmetros disponibles para sp_send_dbmail y sus descripciones:

Parmetro
@profile_name

Descripcin
Nombre del perfil que utilizara el procedimiento almacenado, si el perfil es el perfil por defecto de un usuario o es definido para el rol pblico, este valor es opcional. Enlista las direcciones de correo que recibirn nuestro mensaje. Usaremos punto y coma para separar los valores. Lo mismo que la opcin anterior pero en este caso para copias del mail. De la misma manera que los 2 anteriores, pero en este caso para copia oculta. Motivo del mail. Texto del mensaje, por defecto nulo. El formato de entrega del correo. (TEXT o HTML), por defecto TEXT Permite especificar un valor que indica como el cliente debe tratar el mensaje, (Low, Normal o High) por defecto Normal. Le permite definir un nivel de sensibilidad para el mensaje, interpretado por el cliente. Elija entre Normal, Personal, Private y Confidencial. El valor predeterminado es Normal. Permite proporcionar una lista de archivos externos que se puede conectar al mensaje de

@recipients @copy_recipients @blind_copy_recipients @subject @body @body_format @importance

@sensitivity

@file_attachments

33

@query

@execute_query_database

@attach_query_result_as_file

@query_attachment_filename

@query_result_header

@query_result_width

@query_result_separator

@exclude_query_output

@append_query_error

correo electrnico. El usuario que ejecuta el procedimiento almacenado se debe especificar (y tener acceso a) la ruta de acceso absoluta en la que los archivos residen. Use un punto y coma entre las rutas de archivos para especificar varios archivos. Identifica una consulta cuyos resultados sern enviados como parte del mensaje. Los resultados de la consulta pueden ser aadidos al cuerpo del mensaje o se adjunta como un archivo. Identifica el contexto de la base de datos en los que la consulta anterior se ejecutar. El valor predeterminado es la base de datos actual, y slo se utiliza si la Opcin @query se utiliza. Especifica si el resultado de la consulta se devuelve como parte del cuerpo del mensaje o un archivo adjunto. Se utiliza un valor de bit de 0 a aadir al cuerpo, y un valor de 1 para adjuntar un archivo con los resultados. Por defecto es 0. Permite definir el nombre del archivo que se adjuntar, si @ attach_query_result_as_file se establece en 1. Si un nombre de archivo no es proporcionado, SQL lo har por usted. Bit valor que especifica los encabezados de columna se incluyen con los resultados. No es de extraar, 0 equivale a no, y uno es igual a s. El valor predeterminado es 1. Le permite especificar el ancho de lnea por el nmero mximo de caracteres. Este es un valor entero con un rango entre 10 y 32.767. El valor por defecto es 256. Permite definir un delimitador de carcter nico entre las columnas en una salida de la consulta. El valor predeterminado es un espacio (' '). Esta opcin le permite definir (si se utiliza una consulta en un mensaje en e-mail) si a la salida de los resultados de la consulta a la consola. Este por defecto a 0, que mostrar los resultados. Si se devuelve un error de una consulta, el establecimiento de este valor en 1 se incluye el error en el mensaje de correo electrnico. El valor por defecto de 0 no incluyen informacin sobre el error.

34

@query_no_truncate

@mailitem_id id OUTPUT

Establecer el valor de esta opcin en 1, reemplaza el valor predeterminado comportamiento, que es truncar columnas de longitud variable mayor que 256. Si se ha sobrepasado el valor por defecto, tenga en cuenta que las columnas que almacenan una gran cantidad de datos puede tomar ms tiempo para procesar y enviar. Esta opcin le permite devolver el mailitem_id despus del mensaje se ha generado. Usted puede usar esto para revisar o limpiar los mensajes enviados.

Echa un vistazo a algunos ejemplos sobre como enviar mensajes de correo desde SQL Server. En este primer ejemplo, t puedes crear mensajes de correo que no dependan de ninguna fuente de datos adicional. Esto puede ser ejecutado como una tarea SendMail sobre un trabajo terminado, a travs de la notificacin de un evento. Este enviara un simple mensaje, indicando que una importante tarea ha sido exitosamente completada. EXECUTE msdb.dbo.sp_send_dbmail @profile_name = 'PerfilMailRecargado', @recipients = 'gerardo968_1@hotmail.com', @copy_recipients = 'gerardo968_1@hotmail.com', @body = 'Your data has been successfully imported!', @subject = 'Import Notification Message - Success'; Para comprobar que el mensaje ha sido realmente entregado, se deber estar corriendo los servicios de SMTP y POP3 del dominio de hotmail.com, y tambin deber tener gerardo968_1 y la cuenta de Administrador configurada como destinatario de POP3. Si tienes configurado diferente el servicio SMTP, puede cambiar los parmetro de @recipients y @copy_recipients para validar cuentas de correo. La ventana de consulta simplemente regresara un Correo en Cola. El e-mail resultante deber parecerse a la Figura 8-14.

35

Figura 8-14: Mensaje de Correo Simple Otro ejemplo, utiliza una consulta con el procedimiento almacenado sp_send_dbmail para enviar los resultados a una determinada lista de destinatarios. En este ejemplo, se usar una consulta que regresa los nombres, apellidos y las fechas de contratacin de los empleados en el ao 2002. EXECUTE msdb.dbo.sp_send_dbmail @profile_name = 'PerfilMailRecargado', @recipients = 'gerardo968_1@hotmail.com', @blind_copy_recipients = 'gerardo968_1@hotmail.com; gerardo968.1@gmail.com', @body = 'Aqui esta una consulta de las publicaciones', @query = ' select title_id, title from titles', @execute_query_database = 'pubs', @subject = 'Lista de publicaciones', @attach_query_result_as_file = 1; Un ejemplo ms que nos muestra cmo llevar la informacin de un consulta y prepararla como un documento HTML. T podrs entonces enviar un e-mail con el documento HTML como el cuerpo del mensaje de correo, siempre y cuando el lector del correo destinatario pueda leer HTML, el destinatario tendr una pantalla agradable. USE pubs DECLARE @tableHTML NVARCHAR(MAX) ; SET @tableHTML = N'<H1>Lista de publicaciones</H1>' + N'<table border="1">' +

36

N'<tr><th>ID_Titulo</th><th>Titulo</th>' + CAST ((SELECT td = dbo.titles.title_id, '', td = dbo.titles.title, '' FROM dbo.titles FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) ) + N'</table>'; --select @tableHTML EXEC msdb.dbo.sp_send_dbmail @profile_name = 'PerfilMailRecargado', @recipients='gerardo968.1@live.com', @subject = 'Listado de titulos', @body = @tableHTML, @body_format = 'HTML'; Esto regresara como salida en el correo del cliente lo mostrado en la Figura 8-16.

37

Administracin de Mensajes
Como se mencion anteriormente, los mensajes de Correo de Base de Datos son retenidos en el servidor. Si quieres ver cuales mensajes han sido retenidos, puedes consultar la tabla sysmail_mailitems de la base de datos msdb. Esto regresa informacin detallada de cada mensaje, as como a que destinatarios iban dirigidos, que contena el cuerpo del mensaje, y que perfil envi el mensaje. SELECT * FROM msdb.dbo.sysmail_mailitems Incluso puedes eliminar mensajes del servidor usando el procedimiento almacenado sysmail_delete_mailitems_sp. Esto permitir eliminar mensajes que han fracasado o han tenido xito, o simplemente eliminar mensajes de una fecha especfica. Se requiere que se proporcione Service Pack 1 para la opcin @sent_before o @sent_status. Para eliminar los mensajes hasta antes del 31 de Enero de 2009, se utiliza el siguiente ejemplo: EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = 'November 7, 2011' ; Para eliminar los mensajes que muestran un estado especifico, se usan los siguientes ejemplos: EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = failed; EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = retrying; EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = unsent; EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = sent;

38