Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] enviar mail con integration services con cuerpo de una consulta sql

Estas en el tema de enviar mail con integration services con cuerpo de una consulta sql en el foro de SQL Server en Foros del Web. Buenas quiciera saber como meter el resultado de una consulta o un store procedure en el cuerpo de un mail con integration services. Basicamente lo ...
  #1 (permalink)  
Antiguo 17/05/2013, 15:51
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
enviar mail con integration services con cuerpo de una consulta sql

Buenas quiciera saber como meter el resultado de una consulta o un store procedure en el cuerpo de un mail con integration services.
Basicamente lo que necesito es que me quede un mail con el siguiente formato:


Mensaje........................................... .....................................

Campo1 Campo2
............. .............
............. .............
............. .............
............. .............
............. .............
............. .............
............. .............

Saludos








Mas o menos eso es lo que necesito, lo que nose como hacer es meter lo que me devuelve la consulta. Gracias por leer y si me pueden ayudar mejor.


Saludos
  #2 (permalink)  
Antiguo 17/05/2013, 16:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

Prueba con esto:

Código SQL:
Ver original
  1. CREATE TABLE #DriveSpaceLeft (Drive VARCHAR(10),
  2.                               [MB Free] BIGINT )
  3.  
  4. INSERT #DriveSpaceLeft (Drive, [MB Free])
  5.    EXEC master.dbo.xp_fixeddrives;
  6.  
  7. CREATE TABLE DrivesWithIssue (Drive VARCHAR(10),
  8.                               [MB Free] BIGINT )
  9.  
  10. INSERT INTO DrivesWithIssue
  11.   SELECT Drive, [MB Free] FROM #DriveSpaceLeft
  12.   WHERE [MB Free] < 1000
  13.  
  14. DROP TABLE #DriveSpaceLeft
  15.  
  16. DECLARE @cnt INT  
  17. SELECT @cnt=COUNT(1) FROM DrivesWithIssue
  18. IF (@cnt > 0)
  19. BEGIN
  20.  
  21.     DECLARE @strsubject VARCHAR(100)
  22.     SELECT @strsubject='Check drive space on ' + @@SERVERNAME
  23.  
  24.     DECLARE @tableHTML  nvarchar(MAX);
  25.     SET @tableHTML =
  26.         N'<H1>Drives with less that 1GB Free  - ' + @@SERVERNAME + '</H1>' +
  27.         N'<table border="1">' +
  28.         N'<tr><th>Drive</th>' +
  29.         N'<th>MB Free</th></tr>' +
  30.         CAST ( ( SELECT td = [Drive], '',
  31.                         td = [MB Free]
  32.                   FROM DrivesWithIssue
  33.                   FOR XML PATH('tr'), TYPE
  34.         ) AS NVARCHAR(MAX) ) +     
  35.         N'</table>' +        
  36.         N'<br> Please review the database space and the log files'
  37.         ;
  38.  
  39.     EXEC msdb.dbo.sp_send_dbmail
  40.     --@from_address='[email protected]',
  41.     @recipients ='mail',
  42.     @subject = @strsubject,
  43.     @body = @tableHTML,
  44.     @body_format = 'HTML' ,
  45.     @profile_name='profile'
  46. END
  47.  
  48. DROP TABLE DrivesWithIssue

este formato envia un mail cuando el espacio en disco es menor de 1 GB.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/05/2013, 16:43
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

Hola Libras, te agredesco por tu respuesta. No conocia estos SP que usas y me sirve para aprender algo nuevo, pero desafortunadamente en donde tengo que implementar esta solucion no tengo permisos para usar estos SP.

Saludos
  #4 (permalink)  
Antiguo 17/05/2013, 16:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

entonces como envias el mail??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 17/05/2013, 16:59
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

En integration services por ahora lo envio con un Send Mail Task, pero es un mensaje sin el contenido de la consulta. Yo ejecute en Management Studio la consulta que me pasaste,

Código:
    EXEC msdb.dbo.sp_send_dbmail
    @recipients ='mail',
    @subject = 'hola',
    @body = 'cuerpo',
    @body_format = 'HTML' ,
    @profile_name='profile'
y me dice

Cita:

Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
  #6 (permalink)  
Antiguo 17/05/2013, 17:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

si estas mandado un mail desde IS, porque no mandas tu mail con formato de html y usas la consulta que te pase:

Código SQL:
Ver original
  1. DECLARE @strsubject VARCHAR(100)
  2.     SELECT @strsubject='Check drive space on ' + @@SERVERNAME
  3.  
  4.     DECLARE @tableHTML  nvarchar(MAX);
  5.     SET @tableHTML =
  6.         N'<H1>Drives with less that 1GB Free  - ' + @@SERVERNAME + '</H1>' +
  7.         N'<table border="1">' +
  8.         N'<tr><th>Drive</th>' +
  9.         N'<th>MB Free</th></tr>' +
  10.         CAST ( ( SELECT td = [Drive], '',
  11.                         td = [MB Free]
  12.                   FROM DrivesWithIssue
  13.                   FOR XML PATH('tr'), TYPE
  14.         ) AS NVARCHAR(MAX) ) +      
  15.         N'</table>' +        
  16.         N'<br> Please review the database space and the log files'
  17.         ;
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/05/2013, 23:15
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

Gracia Libras por la respuesta y insistencia para que logre entender tu solucion, a pesar de eso no logre entender bien el metodo que me decia. Probando logre hacer lo que queria, lo deje en mi blog ya que por aca es medio largo de detallar.



Saludos

Última edición por gnzsoloyo; 22/05/2013 a las 02:59
  #8 (permalink)  
Antiguo 22/05/2013, 08:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

y cual es la dir de tu blog, para ver como lo resolviste?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 27/05/2013, 13:47
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: enviar mail con integration services con cuerpo de una consulta sql

http://maurobravo.wordpress.com/2013...-de-sp-dentro/
  #10 (permalink)  
Antiguo 29/05/2013, 09:47
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 14 años, 11 meses
Puntos: 3
Información Respuesta: enviar mail con integration services con cuerpo de una consulta sql

Agrego otra solucion que segun pude probar deja enviar E-Mail con formato HTML para poder darle formato al texto.

En un Script Task meter el siguiente codigo:
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.

Agrego mi blog donde puse esto en imagenes:
http://maurobravo.wordpress.com/2013...-formato-html/

Saludos

Última edición por gnzsoloyo; 29/05/2013 a las 10:15

Etiquetas: integration, mail, send, services, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:01.