SQL Server 2012 Logon исключение
У меня есть 2 приложения, подключающиеся к одной базе данных, при запуске каждого по отдельности оба в порядке. Когда я запускаю их одновременно, один из них получит исключения при входе в систему, как вы можете видеть ниже, это происходит в 99% моих попыток (так что очень редко они в порядке вместе).
И это всегда одно и то же приложение, которое получает исключения (1):
- приложение, которое делает запросы по базе данных
- приложение, которое подключается к сервисному брокеру (это работает во всех случаях)
Первое приложение будет зависать, если я задержу начало второго. Вот некоторые журналы sql сервера:
2015-09-18 07:27:20.43 Logon Error: 18456, Severity: 14, State: 38.
2015-09-18 07:27:20.43 Logon Login failed for user 'domain\user'. Reason: Failed to open the explicitly specified database 'dbname'. [CLIENT: <local machine>]
2015-09-18 07:27:21.32 spid55 Setting database option ENABLE_BROKER to ON for database 'dbname'.
В журналах SQL Server это всегда так: ошибка входа в 2 строки, а затем строка ENABLE_BROKER. Я думаю, что сервисный брокер как-то связан с предыдущими 2.
Подробная информация о envirenmont: SQL Server 11.0.3153.0 - 64-разрядная версия, Windows 7 (7601), работающая на виртуальной машине.
2 ответа
Наконец, я нашел причину этого, это был приведенный ниже оператор базы данных alter, для которого я пока не вижу его использования (при использовании брокера служб он должен быть включен администратором БД, а не каждый раз при перезапуске приложения), После удаления этого кода все выглядит нормально.
ALTER DATABASE [dbname] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Наследственный код веселья:-) (нет)
Потому что ваша база данных находится в однопользовательском режиме. В однопользовательском режиме только один клиент может подключиться к базе данных.
Измените его на многопользовательский режим
GO
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;
Подробнее об однопользовательском режиме вы можете прочитать здесь: https://msdn.microsoft.com/en-us/library/ms345598.aspx?