C# 自动电子邮件数据库结果

C# 自动电子邮件数据库结果,c#,sql,sql-server,sql-server-2000,C#,Sql,Sql Server,Sql Server 2000,我需要一些帮助概念化一个项目。。。 我必须运行4个不同的查询,并将结果作为电子邮件正文发送给指定的收件人。 问题是我需要自动化这个过程,因为我需要每天早上9点发送结果…,我最初的想法是只在SQL Server 2000中设置一个作业,然后让该作业通过电子邮件发送结果,但是这个特定的数据库在SQL Server 2000中。。。, 于是我想我可以创建一个C或VisualBasic程序,并使用windows scheduler来运行和发送报告,但我又回到了一个事实,那就是它是SQL Server 2

我需要一些帮助概念化一个项目。。。 我必须运行4个不同的查询,并将结果作为电子邮件正文发送给指定的收件人。 问题是我需要自动化这个过程,因为我需要每天早上9点发送结果…,我最初的想法是只在SQL Server 2000中设置一个作业,然后让该作业通过电子邮件发送结果,但是这个特定的数据库在SQL Server 2000中。。。, 于是我想我可以创建一个C或VisualBasic程序,并使用windows scheduler来运行和发送报告,但我又回到了一个事实,那就是它是SQL Server 2000,没有用于发送邮件的存储过程。 我可以在线找到一个Send Mail存储过程,但随后无法确定如何将结果附加到参数。 任何关于其他人如何处理这一问题的见解都将不胜感激

谢谢


AJ

SQL2000确实有工作

如何创建作业Transact-SQL 创造就业机会

1.执行sp_add_job以创建作业

2.执行sp_add_jobstep以创建一个或多个作业步骤

3.执行sp_add_jobschedule以创建作业计划

SQL 2000中的电子邮件可以通过Outlook完成,但这有点痛苦。。。Blat是免费的,不需要Outlook或POP3

为了避免附件和呈现好看的电子邮件,只需将行数据压缩到HTML表中并将结果分配给正文即可。如果需要超过8000个字符,则必须使用文本数据类型,但可能有点困难

declare @result varchar(8000)
set @result = '<table>'

select @result = @result + '<tr><td>' + col1 + '</td><td>' + col2 + '</td></tr>'
from whereever
where something = something_else
order by 1

set @result = @result + '</table>'
示例代码:


如果您使用的是石英api,那么您可以使用。您从哪里调用stp_BlatMail?有没有存储过程代码?下一个问题是,有没有一种方法不使用附件而只发送查询结果?同样,我更喜欢在输出中显示结果,而不是在附件中。当然。。。将select语句中的行数据转换为HTML格式,并将其分配给body参数。我不确定是否遵循。。。假设我想从Customer_amount='5'的客户分配Select*,我如何将该输出分配给@body参数?如果在存储过程中调用它,它会出错。是否以HTML形式返回结果?
Exec stp_BlatMail 'ServerName', 'fhtapia@gmail.com',
'System Maintenance: Low Memory', 'D:\Data\TempFiles\MemoryRpt.txt'



CREATE PROCEDURE stp_BlatMail (@FromName AS VARCHAR (1000), @To AS VARCHAR(1000),
@Subject AS VARCHAR(1000), @BODY AS VARCHAR(8000),
@ATTACHMENTS AS VARCHAR(1024) = NULL) AS
-- By: Francisco H Tapia <fhtapia@gmail.com>
-- Date: 8/19/2003
-- Purpose: Provide Outlook free SMTP Mailing
SET NOCOUNT ON
DECLARE @CMD as VARCHAR(8000), @result as INT
IF @TO = ''
BEGIN
SELECT 'ERROR: NO TO Name'
END
ELSE
BEGIN
SELECT @CMD = ' D:\Data\Common\blat.exe - -subject "'+ @Subject
+ '" -t "' + @To
+ '" -sender "SystemUID@Domain.com" -from "'
+ @FromName
+'" -f "SQLMail" -ReplyTo "SystemUID@Domain.com" -org "My Company Name" -x "X-INFO: " -noh
-noh2 -server "ExchangeServerName" -port 25 -u EmailUID -pw Password -body "'
+ LTRIM(RTRIM(@Body)) + '" '
+ ' -q '
If @ATTACHMENTS <> ''
BEGIN
SELECT @CMD = @CMD + ' -attach "' + @ATTACHMENTS + '" '
END
ELSE IF @Attachments IS NOT NULL
BEGIN
SELECT 'NO ATTACHMENT FOUND'
END
EXEC @result = master..xp_cmdShell @CMD, NO_OUTPUT
END
SET NOCOUNT OFF