Sql エージェントを使用してジョブを作成できます。Sql サーバー 2008 にはメール機能もあります。
SQL Management Studio を開き、SQL Server に接続します
SQL Server エージェント ノードを展開します (表示されない場合は、SQL 構成マネージャーを使用するか、サービスをチェックして、SQL Server Agent (SQLINSTANCENAME)
開始されていることを確認します) 。
ジョブを右クリックし、「新しいジョブ」を選択します
ジョブで SQL ステートメントを実行できます。その部分の残りの部分を理解させます (かなり直感的です)。
を使用してメールを送信することができますxp_sendmail
については、SQL のドキュメントを参照してください。xp_sendmail
http://msdn.microsoft.com/en-us/library/ms189505(v=sql.105).aspx
この機能をオンにする必要があるかもしれません (デフォルトではオフになっています)。また、メールを配信するためのサーバー/マシンが必要です (したがって、ローカル マシンの場合は IIS と SMTP をインストールする必要があるかもしれません)。
編集:
サーバーにアクセスできず、クライアント側でこれを行いたい場合は、.NET Framework アプリまたは Windows サービスを作成して、スケジュールまたはタイマー アプローチを使用して作業を行うことができます。
スケジュールアプローチ:
クエリを実行して結果をメールで送信する単純なコマンド ライン アプリケーションを作成し、Windows スケジューラを使用して 1 時間ごと (または任意の間隔) に呼び出します。
タイマー アプローチ:
x分ごとに作業を行うタイマースレッドを実行する単純なアプリケーションまたはWindowsサービスを作成します
私はおそらく前者を選ぶでしょう。コードは非常に単純です - 新しいコンソール アプリ:
static void Main(string args[])
{
// No arguments needed so just do the work
using(SqlConnection conn = new SqlConnection("ConnectionString"))
{
using(SqlCommand cmd = new SqlCommand("sql query text", conn))
{
var dr = cmd.ExecuteReader();
List<myClass> results = new List<myClass>();
// Read the rows
while(dr.Read())
{
var someValue = dr.GetString(dr.GetOrdinal("ColumnName"));
// etc
// stuff these values into myClass and add to the list
results.Add(new myClass(someValue));
}
}
}
if(results.Count > 0) // Send mail
{
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
MailMessage message = new MailMessage(
"recipient@test.com",
"sender@test.com",
"Subject",
"Body");
// Obviously you'd have to read the rows from your list, maybe override ToString() on
// myClass and call that using a StringBuilder to build the email body and append the rows
// This may throw exceptions - maybe some error handling (in any of this code) is advisable
client.Send(message);
}
}
免責事項:おそらくこれはコンパイルされません:D
編集2:コマンドラインから実行できるので、Windowsサービスよりもデバッグがはるかに簡単なので、この方法を使用します。コマンドライン引数を渡すこともできるので、アプリケーション構成ファイルは必要ありません