Jawab Enviar correos desde SQL con dbmail

  • 30 สิงหาคม 2555 17:49
     
     
    Buen día compañeros,

    Vengo trabajando con sp_send_dbmail de sql,para enviar estados de cuenta a un grupo especifico de clientes. Requiero que la variable @body tenga un contenido como el siguiente:

    "
    Señores: 

    @Empresa
    @Id_empresa
    @Ubicacion

    En el archivo adjunto encuentra el estado de cuenta correspondiente al periodo @periodo
    "

    Donde los valores @Empresa, @Id_empresa,
    @Ubicacion y @periodo son variables que recupero de una tabla temporal o de un cursor podria ser. Estos valores son dinamicos por lo cual no los puedo dejar fijos. Como podria incluir a esta variable  estos parametros para que al enviar la lista de correo cada mensaje sea personalizado?


    Agradezco infinitamente su ayuda.

ตอบทั้งหมด

  • 30 สิงหาคม 2555 18:23
    ผู้ดูแล
     
     คำตอบ

    Hello,

    This is an English speaking forum. Please consider the following spanish speaking forum:

    http://social.msdn.microsoft.com/Forums/es/sqlserveres/threads

    I would now try to answer your question in English.

    Try to concatenate the text of the message with the variables and assign them to the @body.

    ---------------------------------------------------------------------------------------------------------

    Este es un foro en inglés. Por favor, considera el siguiente foro disponible en Español.

    http://social.msdn.microsoft.com/Forums/es/sqlserveres/threads

    Trata de concatenar el texto del mensaje con las variables, y luego asigna todo concatenado a @body.

    Hope this helps.

    Regards,
    Alberto Morillo
    SQLCoffee.com






  • 30 สิงหาคม 2555 19:23
     
     

    Gracias Alberto,

    Lo intente pero requiero que tenga los saltos de linea, por lo que es una comunicación a cliente final. Al concatenar  si pone los datos de las variables.

    :) Tks por contestar


    Ztorres

  • 30 สิงหาคม 2555 19:29
    ผู้ดูแล
     
     คำตอบ

    Hello,

    Please add CHAR(13) and CHAR(10) when needed.
    ----------------------------------------------------------------------------------
    Por favor adiciona  CHAR(13) y CHAR(10) a conveniencia.

    http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in-code/

    Hope this helps.

    Regards,
    Alberto Morillo
    SQLCoffee.com

  • 30 สิงหาคม 2555 22:00
     
     

    Funcionó como indicaba en el foro que posteaste aquí, le deje las etiquetas html al texto que manejaba en mis pruebas y ya quedo el body con el formato que necesitaba.

    Muchas gracias por atender la consulta ;)


    Ztorres

  • 30 สิงหาคม 2555 22:43
    ผู้ดูแล
     
     

    Hello,

    I am glad it worked for you.

    Thank you for visiting MSDN Forums!

    Regards,

    Alberto Morillo
    SQLCoffee.com

  • 11 กันยายน 2555 13:56
     
     

    Alberto buen día,

    Tengo un nuevo lio pero esta vez es con el archivo adjunto que intento enviar en un segundo correo de notificación :(. Resulta que cada registro no lo muestra en la misma fila sino que se salta a la siguiente fila, es decir de 15 campos que componen cada registro se muestran 12 de modo continuo y los 3 restantes en la siguiente fila.

    Coloco aquí la definición de lo que estoy haciendo a ver si me puedes sugerir. Por anticipado mil gracias!

     DECLARE @namearc VARCHAR (100) SET @namearc='Inconsistencia_Pagos'+convert(varchar, convert(datetime, getdate()), 112)+'.csv'
     DECLARE @empresa NVARCHAR (30) SET @empresa='A086069'
     DECLARE @squery varchar (max)
     SET @squery='SELECT DISTINCT D.DESCRIPCION A, R.EMPLE_ID B,  X.NAPELLIDO C,CASE WHEN R.PERIODO IS NULL THEN '''' ELSE R.PERIODO END AS D,  CASE WHEN R.DIAS_ESTIMADOS IS NULL THEN '''' ELSE R.DIAS_ESTIMADOS END AS E,  CASE WHEN R.DIAS_COTIZADOS IS NULL THEN '''' ELSE R.DIAS_COTIZADOS END AS F,  CASE WHEN  R.SALARIO_ESTIMADO IS NULL THEN 0 ELSE R.SALARIO_ESTIMADO END AS G,   CASE WHEN  R.SALARIO_COTIZADO IS NULL THEN 0 ELSE R.SALARIO_COTIZADO  END AS H,  CASE WHEN R.IBC_ESTIMADO IS NULL THEN 0 ELSE R.IBC_ESTIMADO END AS I,  CASE WHEN R.IBC_COTIZADO IS NULL THEN 0 ELSE R.IBC_COTIZADO END AS J,  CASE WHEN R.TARIFA_ESTIMADA IS NULL THEN 0 ELSE R.TARIFA_ESTIMADA END AS K,  CASE WHEN R.TARIFA_COTIZADA IS NULL THEN 0 ELSE R.TARIFA_COTIZADA END AS L,  CASE WHEN R.VALOR_ESTIMADO IS NULL THEN 0 ELSE R.VALOR_ESTIMADO  END AS M,  CASE WHEN  R.VALOR_COTIZADO IS NULL THEN 0 ELSE  R.VALOR_COTIZADO END AS N,  CASE WHEN  R.CARTERA IS NULL THEN 0 ELSE R.CARTERA END AS O  FROM nbprod.nbdarp.DEPURACION.ANALISIS_CARTERA R WITH(NOLOCK)  INNER JOIN nbprod.nbdarp.DEPURACION.DESCRIPCION_RAZON_CARTERA D ON R.RAZON_CARTERA = D.CODIGO INNER JOIN   (   SELECT DISTINCT EMPLE_ID,(EMPLE_PNOM+EMPLE_PAPEL)NAPELLIDO FROM nbprod.nbdarp.DBO.EMPLEADO WITH(NOLOCK)   WHERE EMPRE_FORM="'+@empresa+'"   )X ON X.EMPLE_ID=R.EMPLE_ID WHERE R.EMPRE_FORM="'+@empresa+'"'


    EXEC msdb.dbo.sp_send_dbmail @recipients='micorreo@micorreo.com',
        @subject ='test',
        @profile_name='miprofile',
        @body = 'detalle de inconsistencias',
        @query=@squery,
        @attach_query_result_as_file = 1, 
        @query_attachment_filename =@namearc,
        @query_result_separator=',';


    Ztorres

  • 11 กันยายน 2555 15:26
    ผู้ดูแล
     
     คำตอบ

    Hello,

    Use the @query_result_width option. Default value is 256.

    Please see the following article:

    http://msdn.microsoft.com/en-us/library/ms190307.aspx  

    Hope this helps.

    Regards,
    Alberto Morillo
    SQLCoffee.com

    • ทำเครื่องหมายเป็นคำตอบโดย ztoni26 11 กันยายน 2555 17:38
    •  
  • 11 กันยายน 2555 17:37
     
     

    Apeciado Alberto,

    Excelente, funcionó perfectamente, tks! :)

    ZT.


    Ztorres

  • 11 กันยายน 2555 18:18
    ผู้ดูแล
     
     

    Hello,

    Thank you for letting me know and thank you for visiting MSDN forums!

    Regards,

    Alberto Morillo
    SQLCoffee.com

  • 12 กันยายน 2555 22:40
     
     

    Alberto que pena nuevamente una consulta es que en el foro postee mi pregunta pero ha sido mas complejo.

    Esta es la situacion:

    Solicito su colaboración con la siguiente consulta:
    Requiero restaurar una base de datos que esta en SQL Server 2000 de un día en particular, tengo los archivos .mdf y ldf de ese dia pero no tengo claro que debo hacer para restaurar adecuadamente la base de datos con estos archivos.

    El motor esta operativo y funcional, la base de datos no se ha dañado, solo requiero restaurarla a ese dia y ya.

    En el foro alguien me respondió que con solo adjuntar los archivos era suficiente y no se necesitaba reiniciar ningun servicio de SQL...

    Me pregunto si eso es asi no se puede solo reemplazar los archivos .ldf y mdf y ya ?

    Quedo atenta de tu respuesta.


    Por anticipado, muchas gracias!

    Ztorres


    Ztorres