Есть служба, которая при старте подключается к MSSQL. Периодически, когда служба стартует вместе с виндой это подключение обламывается с ошибкой:
Login failed for user 'NT AUTHORITY\SYSTEM'.: Cannot open database "dbname" requested by the login. The login failed.
Если тупо вставить перед подключением к БД задержку ~15сек, ошибка исчезает. Ну и естественно если тормозить/запускать службу руками — тоже все OK.
Зависимость от SQLServer у службы есть. Служба запускается под LocalSystem. Строка подключения:
"Data Source=.\SQLEXPRESS;Initial Catalog=dbname;Integrated Security=True;Connect Timeout=100"
Явно нужна зависимость еще от чего-то, вот только от чего?
Здравствуйте, Odi$$ey, Вы писали:
OE>"Data Source=.\SQLEXPRESS;Initial Catalog=dbname;Integrated Security=True;Connect Timeout=100"
OE>Явно нужна зависимость еще от чего-то, вот только от чего?
причина видимо в том, что MSSQL сначала приводит в чувство системные базы, потом разрешает коннектиться, а потом начинает заниматься пользовательскими, то есть соединение уже открыть можно, а dbname еще недоступна.
пронаблюдать за стартом можно по сообщениям в ивентлоге или логе MSSQLя
зависить тут больше не от чего... как вариант можно сменить initial catalog на master
потом проверять
select [state] from sys.databases where name = 'dbname'
пока не станет равным 0 (online), потом use dbname и т.д.
как то не очень красиво, может кто лучше придумает
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Здравствуйте, Odi$$ey, Вы писали:
OE>Есть служба, которая при старте подключается к MSSQL. Периодически, когда служба стартует вместе с виндой это подключение обламывается с ошибкой:
OE>OE>Login failed for user 'NT AUTHORITY\SYSTEM'.: Cannot open database "dbname" requested by the login. The login failed.
OE>Если тупо вставить перед подключением к БД задержку ~15сек, ошибка исчезает. Ну и естественно если тормозить/запускать службу руками — тоже все OK.
По моему не очень хорошая схема. Может лучше, чтобы соединение периодически пыталось установиться?
AlexVinS wrote:
> Хорошо бы было чтобы СУБД сообщала о том что она запустилась когда она
> действительно запустилась полностью. Интересно, это свойство только
> mssql или другие тоже грешат этим? Поднимались подобные темы уже вроде
Грешат все этим. Ну может быть не все, а многие.
Posted via RSDN NNTP Server 2.1 beta