由於備份伺服器每天都還原生產伺服器傳來的新的資料,如何查看資料庫還原狀態是成功還是失敗?
我們將通過查看“控制台”—〉“管理工具”—〉“事件檢視器”來查看還原情況。
下面我們將設定一個寄件提醒功能,監控每天淩晨資料庫啟動並執行狀態,將還原成功和錯誤資訊都發送到郵件中。
static void Main(string[] args)
{
SendMailAboutCheckServerStatus();
Console.ReadKey();
}
private static void SendMailAboutCheckServerStatus()
{
EventLog elog = new EventLog();
elog.Log = "Application";
string emailmessage = "";
for (int i = 0; i < elog.Entries.Count; i++)
{
try
{
if (elog.Entries[i].Source == "MSSQLSERVER")
{
DateTime starttime=Convert.ToDateTime( DateTime.Now.ToString("yyyy-MM-dd")+" 00:00:00");
DateTime endtime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 8:30:00");
if (elog.Entries[i].TimeGenerated > starttime && elog.Entries[i].TimeGenerated < endtime)
{
if (elog.Entries[i].EntryType.ToString() == "Error")
{
emailmessage += "Message: " + elog.Entries[i].Message + "<br>" +
"App: " + elog.Entries[i].Source + "<br>" +
"Entry type: " + elog.Entries[i].EntryType + "<br>" +
"TimeGenerated :" + elog.Entries[i].TimeGenerated + "<br>";
}
if (elog.Entries[i].Message.Contains("資料庫已還原"))
{
emailmessage += "Message: " + elog.Entries[i].Message + "<br>" +
"App: " + elog.Entries[i].Source + "<br>" +
"Entry type: " + elog.Entries[i].EntryType + "<br>" +
"TimeGenerated :" + elog.Entries[i].TimeGenerated + "<br>";
}
}
}
}
catch { }
}
SendEMailInfo(emailmessage);
Console.WriteLine("End!");
}
private static void SendEMailInfo(string emailmessage)
{
try
{
#region 郵件 Client設定
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.Host = "mail.126.com";
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("namn@126.com", "password");
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = new System.Net.Mail.MailAddress("name@126.com", "displayname", System.Text.Encoding.UTF8);
#endregion
message.Subject = "資料庫還原狀態"; //郵件主題
message.Body = emailmessage; //郵件內容
message.To.Add("name@126.com"); //收件者
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
message.Priority = System.Net.Mail.MailPriority.High;//郵件優先順序
client.Send(message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}