回答:
Gaiusの投稿に続く:スクリプトの前でdbを使用して必要なことを実行する.SQLスクリプトを作成できます->スクリプトを呼び出すオペレーティングシステムタイプのSQLエージェントジョブを作成します。
sqlcmd -E -S SERVERNAME -i "c:\ YOURSCRIPT.sql" -o "C:\ YOURSCRIPT_LOG.log"
新しいステップを追加し、msdb.dbo.sp_send_dbmailプロシージャを使用して電子メールを送信します。この機能をカスタマイズして、SQLテーブルからの特定のクエリをメール内に表示し、スクリプトの実行を確認できます。たとえば、再構築インデックスのdbcc showcontigなどです。
SQLジョブを使用するオプションはありますか?そこから通知などができます。断続的な通知を取得する限り、ストアドプロシージャ内にコードなどが必要になります。
私は常に「EventLog」テーブルにメッセージを書き込みます。大量のデータを処理する場合、データをチャンクで管理し、チャンクごとにステータス更新をEventLogに書き込みます。
長時間実行されているプロセスの進行状況を確認したい場合は、EventLogテーブルをクエリするだけです。
出力例:
------------------- -私の大きなアップデート- ------------------- 開始日:2011-05-03 10:00:00 処理するレコード:1,000,000 チャンク:200 ---チャンク1 --- MyTableを更新しようとしています 更新されたレコード:5000 残りの記録:995,000 スループット:4210レコード/秒 ---チャンク2-- MyTableを更新しようとしています 更新されたレコード:5000 残りの記録:990,000 スループット:1秒あたり3555レコード ---チャンク3-- 等
また、EventLogテーブルには、メッセージがいつ書き込まれたか、どのプロセスがメッセージを書き込んだかなどを追跡するための列があります。この例にその情報を含めていないことに申し訳ありません。