SqlException, когда база данных не запущена, но SQL Server готов к подключению

Я имею дело с довольно большой задержкой между состоянием «готовых к подключению» SQL Server и временем запуска моей базы данных. Иногда это занимает более 2 минут. Вот почему я иногда пытаюсь подключиться к базе данных, прежде чем она будет в сети. Знаете ли вы, как сократить время между «готовыми к подключению» и начатой ​​базой данных? Или как я могу определить, что db подключен к сети из моего приложения C #?

В основном у меня есть некоторый «кеш» соединений по строке подключения. Это происходит для первого соединения, конечно, поэтому мой код для соединений довольно прост:

var result = new SqlConnection(); result.ConnectionString = "some connection string here"; try { result.Open() } catch (Exception ex) { //some logging stuff here throw; } 

Это исключение C #:

System.Data.SqlClient.SqlException: не удается открыть базу данных «XXX», запрошенную при входе в систему. Ошибка входа в систему.

Это журнал SQL Server:

2014-03-31 08: 21: 05.65 – SQL Server теперь готов для клиентских подключений. Это информационное сообщение; От пользователя не потребуется никаких действий.

2014-03-31 08: 21: 09.21 – Восстановление завершено для модели базы данных (идентификатор базы данных 3) за 1 секунду (анализ 234 мс, повтор 0 мс, отмена 514 мс). Это только информационное сообщение. От пользователя не потребуется никаких действий.

2014-03-31 08: 21: 11.52 – Ошибка: 18456, уровень серьезности: 14, состояние: 38.

2014-03-31 08: 21: 11.52 – Ошибка входа для пользователя «YYY». Причина: Не удалось открыть явно указанную базу данных. [КЛИЕНТ:]

2014-03-31 08: 21: 13.88 – Очистка базы данных tempdb.

2014-03-31 08: 21: 21.38 – Восстановление завершено для базы данных msdb (идентификатор базы данных 4) за 2 секунды (анализ 327 мс, повтор 0 мс, отмена 468 мс.) Это только информационное сообщение. От пользователя не потребуется никаких действий.

2014-03-31 08: 21: 32.98 – Запуск базы данных «tempdb».

2014-03-31 08: 21: 40.30 – Транспортировка протокола Service Broker отключена или не настроена.

2014-03-31 08: 21: 40.41 – Транспортировка протокола зеркального отображения базы данных отключена или не настроена.

2014-03-31 08: 21: 41.50 – Восстановление завершено. Это информационное сообщение. От пользователя не потребуется никаких действий.

2014-03-31 08: 21: 41.52 – Начат запуск менеджера сервис-брокера.

2014-03-31 08: 23: 41.87 – Запуск базы данных «XXX».

Исходя из этой ссылки , наилучшей практикой является запрос значения свойства Collation.

База данных, которая только что появилась в Интернете, необязательно готова к подключению. Чтобы определить, когда база данных может принимать соединения, запросите столбец collation_name для sys.databases или свойство Collation для DATABASEPROPERTYEX.

Поэтому, когда свойство Collation не равно null, база данных готова к подключению. Запрос выглядит так:

 SELECT DATABASEPROPERTYEX('MyDatabase', 'Collation') 
  • Как написать запрос для вставки данных в две таблицы с отношениями внешних ключей в SQL Server?
  • Вставьте дочерние узлы из переменной XML xml в другую переменную xml
  • Обработка XML-тегов сервера Sql
  • Могу ли я разбивать запрос на Sql Server без использования ROW_NUM () OVER (ORDER BY xxxxx)?
  • При выполнении большего количества запросов я получил «Не разрешено изменять свойство ConnectionString».
  • Получить узел родительского отдела в платформе Entity Framework
  • Как ограничить действие предложения OUTPUT в инструкции MERGE?
  • слияние в sqlserver - неправильный синтаксис
  • Есть ли способ DISTINCT или group с помощью текста (или ntext) в SQL Server 2005?
  • Кэширование SQL-запросов
  • Как заблокировать таблицу при чтении, используя Entity Framework?
  • Interesting Posts

    Объединение трех таблиц и удаление нулей из 2-й и 3-й таблиц в SQL Server

    WSO2 AM 1.10.0: «Типы данных текста, ntext и изображений не могут сравниваться или сортироваться, за исключением случаев использования оператора IS NULL или LIKE».

    Является ли поток .net DbProviderFactory безопасным?

    параметр pass в функции с табличной оценкой с использованием оператора select

    Как динамически вычислять сумму нескольких неизвестных столбцов в sql?

    Замените несколько экземпляров символа одним экземпляром в sql

    Datepart Calculation in Where where

    как исключить или setnull по некоторому параметру, если edittext пуст

    Сгенерировать скрипт вставки из существующих данных с помощью предложения select в SQL Server

    Могу ли я разместить веб-сайт под старым?

    Подход к разработке общей базы данных

    Как получить результат оператора select, сгруппированного по столбцу, для выполнения инструкции объединения на нем?

    Как рассчитать процент, используя столбцы данных в SSRS TABLIX, которые я сгруппировал

    Должен ли я помещать обработку ошибок в T-SQL?

    Использовать SQL Server 2008 SSRS и SSAS для экземпляра SQL 2000 и базы данных?

    Давайте будем гением компьютера.