0

プロジェクトの概念化について助けが必要です... 4 つの異なるクエリを実行し、結果を電子メールの本文として定義済みの受信者に送信する必要があります。
問題は、毎朝午前 9 時に結果を送信する必要があるため、このプロセスを自動化する必要があることです...最初は、SQL Server2000 でジョブをセットアップし、そのジョブに結果を電子メールで送信させることを考えていましたが、この特定のデータベースはは SQL Server 2000 にあります...、それで、C# または Visual Basic プログラムを作成し、Windows スケジューラを使用してレポートを実行し、電子メールで送信できると考えましたが、SQL Server 2000 であり、存在しないという事実に再び戻ってきました。メールを送信するためのストアド プロシージャ。
Send Mail ストアド プロシージャをオンラインで見つけることができましたが、結果をパラメータに添付する方法がわかりませんでした。他の人がこれをどのように処理するかについての洞察は大歓迎です。

ありがとう、

AJ

4

1 に答える 1

1

SQL2000にはジョブがあります。

http://msdn.microsoft.com/en-us/library/aa215382(v=sql.80).aspx

ジョブの作成方法(Transact-SQL)ジョブを作成するには

1.sp_add_jobを実行してジョブを作成します。

2. sp_add_jobstepを実行して、1つ以上のジョブステップを作成します。

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>'

http://www.blat.net/

サンプルコード:http ://www.devx.com/dbzone/Article/42178

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 
于 2012-07-13T13:39:35.907 に答える