Подключение к MSSQL при запуске Windows
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 02.02.10 07:11
Оценка:
Есть служба, которая при старте подключается к 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"

Явно нужна зависимость еще от чего-то, вот только от чего?
Re: Подключение к MSSQL при запуске Windows
От: ksg71 Германия  
Дата: 02.02.10 08:37
Оценка: 18 (1)
Здравствуйте, 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
Re: Подключение к MSSQL при запуске Windows
От: _d_m_  
Дата: 02.02.10 09:26
Оценка: +1
Здравствуйте, 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.

По моему не очень хорошая схема. Может лучше, чтобы соединение периодически пыталось установиться?
Re[2]: Подключение к MSSQL при запуске Windows
От: AlexVinS Россия  
Дата: 02.02.10 18:14
Оценка:
Здравствуйте, ksg71, Вы писали:

K>причина видимо в том, что MSSQL сначала приводит в чувство системные базы, потом разрешает коннектиться, а потом начинает заниматься пользовательскими, то есть соединение уже открыть можно, а dbname еще недоступна.


Хорошо бы было чтобы СУБД сообщала о том что она запустилась когда она действительно запустилась полностью. Интересно, это свойство только mssql или другие тоже грешат этим? Поднимались подобные темы уже вроде даже на этом форуме, но это давно было.


Умный человек знает не многое, но нужное
Re[3]: Подключение к MSSQL при запуске Windows
От: MasterZiv СССР  
Дата: 03.02.10 07:12
Оценка:
AlexVinS wrote:

> Хорошо бы было чтобы СУБД сообщала о том что она запустилась когда она

> действительно запустилась полностью. Интересно, это свойство только
> mssql или другие тоже грешат этим? Поднимались подобные темы уже вроде

Грешат все этим. Ну может быть не все, а многие.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.