2016-11-17 4 views
1

ЦЕЛЬ:

Служба Windows не удается подключиться к локальному устройству Microsoft

Я пытаюсь подключить «Службу Windows» к LocalDB MS SQL Server. Когда я запускаю свою «службу Windows» через Службы панели управления, она терпит неудачу. Моя же «служба Windows» работает под управлением Visual Studio.

(Моя «служба Windows» использует LocalService в соответствии с окном «Службы панели управления»).

ПОПЫТКИ:

1) завершает работу с LocalService.

Ошибка: «Ошибка входа в систему для пользователя» NT AUTHORITY \ LOCAL SERVICE ».

Моя строка подключения для ошибки: add name = "LocalDB" providerName = "System.Data.SqlClient" connectionString = "Источник данных = (LocalDb) \ v11.0; Начальный каталог = MyDatabase; Integrated Security = True "

2) Я добавил логин SQL Server [NT AUTHORITY \ LOCAL SERVICE] on (localDB) \ v11.0 и предоставил db_owner, db_datareader и db_datawriter доступ к MyDatabase через SSMS. (Это автоматически создает пользователя базы данных в папке Security \ Users \ в MyDatabase). Я все еще получаю ошибку.

3) Я добавил логин SQL Server для EngineUser on (localDB) \ v11.0 и предоставил db_owner, db_datareader и db_datawriter доступ к MyDatabase через SSMS с паролем того же самого.

Я изменил мою строку подключения моего WindowsService к:

добавить имя = "LocalDB" ProviderName = "System.Data.SqlClient" ConnectionString = "Источник данных = (LocalDB) \ v11.0; Initial Catalog = MyDatabase; Integrated Security = false; User Id = EngineUser; Password = EngineUser; Тайм-аут подключения = 30 "

Ошибка:« Ошибка входа для пользователя «EngineUser».

Я вышел из командной строки под управлением администратора и подтвердил, что пользователь и пароль хороши: sqlcmd -S (localDb) \ v11.0 - U EngineUser -P EngineUser.

Я подключился в SSMS к (localDb) \ v11.0, используя «Аутентификацию SQL Server» с помощью EngineUser и того же пароля. Также подтверждено, что я могу выбрать и обновить в MyDatabase с помощью этого соединения.

4) У меня есть рабочее приложение WPF, которое использует MyDatabase on (localDB) \ v11.0 без проблем, но помните, что это традиционное приложение, а не «служба Windows».

5) Запустив исходный код моей «Службы Windows» в Visual Studio, соединение с БД работает нормально, а строки данных выбраны и вставлены.

6) Я попытался создать общий экземпляр localDB, но не смог полностью его выполнить и не соответствовал бы моим бизнес-требованиям.

7) Убедитесь, что мой (localDb) \ v11.0 имеет «SQL Server и Windows Authentication Mode» (смешанный режим a.k.a.).

) Проверено, что свойства входа в систему EngineUser и [NT AUTHORITY \ LOCAL SERVICE] имеют разрешение на подключение к движку базы данных и вход в систему «включен».

9) Используемый профилировщик MS Sql Server, подключающийся к активной трассировке (localDB) \ v11.0, и я вижу активность, выполняющую мой WindowService в Visual Studio, и я НЕ вижу никаких действий, запускающих мой WindowsService на экране «Службы» панели управления , Даже если я включу «все события», чтобы увидеть полный список событий, отметьте все события ошибки и выберите «Аудит входа» и «Аудит входа в систему».

10) Я посмотрел на аналогичных нитей, таких как: The login failed. Login failed for user 'NT AUTHORITY\NETWORK

+1

Возможный дубликат [Использование SQL LocalDB в службе Windows] (http://stackoverflow.com/questions/26597498/using-sql-localdb-in-a-windows-service) и [Как разрешить фоновое обслуживание окна для доступа к базе данных SQL Server?] (http://stackoverflow.com/q/6607742/62576) –

+0

Найденный ответ - см. ниже. –

ответ

1

нашел мой ответ. Для каждой отдельной учетной записи Windows существуют разные LocalDb. Поскольку я установил приложение во время входа в систему, он установил LocalDb под моей учетной записью CORP \ ewood. Служба Windows работала как «LocalService», она искала другую несуществующую базу данных LocalDb. Мое решение состоит в том, чтобы изменить Службу Windows, когда она устанавливает на «Вход в систему», как пользователь, который изначально установил приложение и, таким образом, создал LocalDb. Поэтому мне нужно установить учетную запись, имя пользователя и пароль ServiceProcessInstaller для установки пользователя.