C# SQL Server连接

3

您好,作为日常检查,我需要检查所有服务器的SQL连接。目前,这是通过手动登录SQL Server Management Studio来完成的。我想知道是否可以用C#编写代码,以便我可以在早上第一时间运行它,并检查每个服务器和实例的有效SQL连接,并报告连接是否正常。

谢谢,Andy


2
可以的。你会写代码吗? - cjk
抱歉,我应该说我的C#非常有限。我可能只能做出一个简单的“Hello World”程序,其他就不行了。 - andy
5个回答

3
这是一个小型控制台应用程序示例,它将循环遍历连接列表并尝试连接到每个连接,报告成功或失败。理想情况下,您可能希望扩展此功能以从文件中读取连接字符串列表,但这应该可以帮助您入门。
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();
        }
    }
}

2
请看SqlConnection类,其中包含一个基本示例。将该示例放在循环中以连接到每个服务器,如果任何一个服务器连接失败,则会抛出异常。

然后在Windows中设置它为定期任务。

一个好的报告状态方式可能是通过电子邮件发送,可以使用SmtpClient.Send轻松地发送(链接中有一个简单的样例)。


2

为什么选择C#?你可以使用osql命令编写简单的批处理文件来实现这个功能。

osql -S servername\dbname -E -Q "select 'itworks'"

0
你也可以看一下这个方法:
SqlDataSourceEnumerator.Instance.GetDataSources()

它会给你一个可用于网络的SQL服务器列表。

-1

你知道吗,有一些监控工具可以让你知道你的SQL服务器是否宕机了...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接