У меня есть следующий код:
class Program
{
static void Main()
{
var connection = new SqlConnection("myConnectionString");
connection.Open();
connection.StateChange += HandleSqlConnectionDrop;
Console.WriteLine("Hi");
Console.ReadLine();
}
private static void HandleSqlConnectionDrop(object connection, StateChangeEventArgs args)
{
Console.WriteLine("DB change detected");
}
}
Я запускаю вышеуказанный код, пока экземпляр SQL-сервера запущен. Затем я перехожу к выполнению
SHUTDOWN WITH NOWAIT;
на сервере SQL Server, к которому подключена программа. Затем я наблюдаю остановку службы SQL-сервера. Тем не менее, я никогда не вижу сообщение "обнаружено изменение БД" на выходе. Почему это?
Помимо этого: Я увижу, что обработчик StateChange вызывается, если я затем попытаюсь выполнить операцию над соединением SQL, но никогда раньше. Есть ли способ изменить это поведение?