您好,作为日常检查,我需要检查所有服务器的SQL连接。目前,这是通过手动登录SQL Server Management Studio来完成的。我想知道是否可以用C#编写代码,以便我可以在早上第一时间运行它,并检查每个服务器和实例的有效SQL连接,并报告连接是否正常。
谢谢,Andy
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
namespace SQLServerChecker
{
class Program
{
static void Main(string[] args)
{
// Use a dictionary to associate a friendly name with each connection string.
IDictionary<string, string> connectionStrings = new Dictionary<string, string>();
connectionStrings.Add("Sales Database", "< connection string >");
connectionStrings.Add("QA Database", "< connection string >");
foreach (string databaseName in connectionStrings.Keys)
{
try
{
string connectionString = connectionStrings[databaseName];
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("Connected to {0}", databaseName);
}
}
catch (Exception ex)
{
// Handle the connection failure.
Console.WriteLine("FAILED to connect to {0} - {1}", databaseName, ex.Message);
}
}
// Wait for a keypress to stop the console closing.
Console.WriteLine("Press any key to finish.");
Console.ReadKey();
}
}
}
然后在Windows中设置它为定期任务。
一个好的报告状态方式可能是通过电子邮件发送,可以使用SmtpClient.Send轻松地发送(链接中有一个简单的样例)。
为什么选择C#?你可以使用osql命令编写简单的批处理文件来实现这个功能。
osql -S servername\dbname -E -Q "select 'itworks'"
SqlDataSourceEnumerator.Instance.GetDataSources()
你知道吗,有一些监控工具可以让你知道你的SQL服务器是否宕机了...