C # SQL соединение с сервером - PullRequest
       0

C # SQL соединение с сервером

3 голосов
/ 06 сентября 2010

HI В качестве ежедневной проверки я должен проверять соединение SQL со всеми нашими серверами.На данный момент это делается путем ручного входа через SQL Server Managment Studio.Мне просто интересно, может ли это быть закодировано в C #, чтобы я мог запустить его первым делом за утро, проверяя каждый сервер и экземпляр на предмет допустимого соединения SQL и сообщая, чтобы сказать, является ли соединение активным или нет.

Спасибо, Энди

Ответы [ 5 ]

3 голосов
/ 06 сентября 2010

Вот небольшой пример консольного приложения, который будет циклически перебирать список соединений и пытаться соединиться с каждым, сообщая об успехе или неудаче. В идеале, возможно, вы захотите расширить это, чтобы прочитать список строк подключения из файла, но, надеюсь, это поможет вам начать.

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 голосов
/ 06 сентября 2010

Почему C #? Вы можете создать простой командный файл, который делает это, используя команду osql.

osql -S servername\dbname -E -Q "select 'itworks'"
2 голосов
/ 06 сентября 2010

Посмотрите на класс SqlConnection .Включает базовый образец.Просто поместите цикл вокруг этого образца, чтобы подключиться к каждому серверу, и если какой-либо сервер не сможет подключиться, он выдаст исключение.

Затем просто настройте его как запланированное задание в Windows.Хороший способ сообщить о состоянии может быть с помощью электронного письма, которое можно легко отправить с помощью SmtpClient.Send (ссылка имеет хороший простой пример.

0 голосов
/ 06 сентября 2010

Вы знаете, они создают инструменты мониторинга, которые сообщают вам, если ваш сервер sql выходит из строя.,,

0 голосов
/ 06 сентября 2010

Вы также можете взглянуть на этот метод:

SqlDataSourceEnumerator.Instance.GetDataSources()

Предоставляет список SQL-серверов, доступных в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...