【问题标题】:using sp_send_dbmail with join将 sp_send_dbmail 与连接一起使用
【发布时间】:2013-08-19 19:34:32
【问题描述】:

我正在尝试在Sql Server Agent 上运行以下作业,但我没有收到电子邮件。

我认为我在inner join 中表示表的方式有问题,因为如果我将查询替换为没有连接的简单查询,则任务有效。

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'TEST_DEV',
    @recipients = 'xxx@gmail.com',
    @query = ' select 
            Percentage = CONVERT(DECIMAL(10,1),100 - (CAST(COUNT(DISTINCT case when PD.Exception  != ' ' then PD.Id  END) as float)/CAST(COUNT(PD.Id) as float)*100))
         from 
                DataBaseName.dbo.Product P INNER JOIN DataBaseName.dbo.LogProduct PD 
                ON P.LogId = PD.LogId

                WHERE   
                ResponseTime < GETDATE() and  RequestTime > DATEADD(MINUTE, -150, GETDATE())
                ' ,
    @subject = 'Test',
    @attach_query_result_as_file = 1 ;

【问题讨论】:

    标签: sql-server tsql sql-server-2008-r2 sql-agent-job sql-job


    【解决方案1】:

    我一直在我的@query 参数中使用连接而没有错误。您没有收到电子邮件的事实通常表明查询在运行时没有成功解析。

    带有连接的查询是否直接在 SSMS 中运行?您可能会考虑创建一个变量@ResponseTime TYPE???并在 send_dbmail 之前设置变量的值,然后简单地传递该值以用 @ResponseTime 替换语法

    【讨论】:

      【解决方案2】:

      我确实注意到了格式问题。您需要使用 '' 来转义引号 '。这可能是您查询的第一个问题。

      如果您安装了 Adventure Works,请从我的数据库邮件 blog 条目中运行以下查询。只需替换个人资料名称和收件人邮件地址。这将测试 sp_send_dbmail() 函数。

      -- Send with query results as an attachment
      EXEC msdb.dbo.sp_send_dbmail
      @profile_name = 'The Public Profile',
      @recipients = 'john@craftydba.com',
      @query = 'SELECT COUNT(*) FROM AdventureWorks2008R2.Production.WorkOrder
      WHERE DueDate > ''2006-04-30''
      AND DATEDIFF(dd, ''2006-04-30'', DueDate) < 2' ,
      @subject = 'Work Order Count',
      @attach_query_result_as_file = 1 ;
      GO
      

      如果这确实有效,请在 SSMS 中测试您的查询以确保您得到结果。

      【讨论】:

        【解决方案3】:

        以上两个答案都对我有帮助。我为解决我的问题所做的是,我使用存储过程而不是查询。现在可以正常使用了。

        @query = 'exec DatabaseName.dbo.storedprocedure' 
        

        【讨论】:

          猜你喜欢
          • 2017-11-18
          • 2015-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-29
          • 2020-06-21
          • 2018-10-03
          • 1970-01-01
          相关资源
          最近更新 更多