无法使T-SQL电子邮件警报生效

时间:2013-01-22 21:17:51

标签: sql sql-server tsql

基本上,我正在尝试创建一个向我发送电子邮件警报的T-SQL语句。我已附上以下查询。查询从选择开始,结束于Tat 0是我想要执行的并通过电子邮件返回这些数据。

当我单独运行该查询时,它返回正常。我怀疑它在整个T-SQL语句中的内容是不正确的。我有点像db newb。任何澄清都会非常有帮助。

begin
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'TRGEmail',
@recipients = 'test@test.com',
@body = 'The cases below have reach TAT 3 for PRI X Ray. Please set accordingly.

',
@query = 'select
 PATIENTS.FirstName, PATIENTS.Lastname, 
 STUDIES.study_datetime, 
 STUDY_LIST_VIEW.tat, 
 PATIENTS.Patient_ID
 from
opalrad.dbo.INSTITUTIONS INSTITUTIONS, 
opalrad.dbo.PATIENTS PATIENTS, 
opalrad.dbo.STATUSES STATUSES, 
opalrad.dbo.STUDIES STUDIES, 
opalrad.dbo.studies_calc studies_calc, 
opalrad.dbo.STUDY_LIST_VIEW STUDY_LIST_VIEW, 
opalrad.dbo.TRANSCRIPTION_TEXT TRANSCRIPTION_TEXT

 where 
STUDIES.study_id = studies_calc.study_id AND 
STUDIES.institution_id = INSTITUTIONS.institution_id AND 
TRANSCRIPTION_TEXT.STUDY_ID = STUDIES.study_id AND 
TRANSCRIPTION_TEXT.STUDY_ID = studies_calc.study_id AND 
PATIENTS.Patient_ID = STUDIES.patient_id AND 
STUDY_LIST_VIEW.INSTITUTION_ID = INSTITUTIONS.institution_id AND 
STUDY_LIST_VIEW.PATIENT_ID = PATIENTS.Patient_ID AND 
STUDY_LIST_VIEW.study_id = STUDIES.study_id AND 
STUDY_LIST_VIEW.study_id = studies_calc.study_id AND 
((INSTITUTIONS.institution_id= 569 ) AND 
(STUDY_LIST_VIEW.tat=0))',
 @subject = 'PRI STAT 3 requiring attention';
 end

1 个答案:

答案 0 :(得分:1)

使用网络服务器实际发送电子邮件而不是SQL Server是否可行?如果是这样,我建议你这样做。

使用数据库执行此操作在性能方面存在风险。游标通常很慢,因为它需要单独对每一行执行操作。在这种情况下,您正在为每一行调用一个过程,这可能会使事情变得更糟。

如果您只是将结果集返回到您的网络服务器,则可以使用内置的电子邮件功能。由于您的查询工作正常,您将解决数据库问题,并可能为您节省很多性能问题。

作为旁注,是否可以使用CSS代替<b>标签? ;)

编辑:如果您无法将此功能移至网络服务器,请尝试在set @tableHTML行的末尾添加单引号。它缺少结束引用,这会导致语法错误。此外,请确保在完成光标后取消分配光标:DEALLOCATE cursorName