Под какой учетной записью пользователя должна работать служба Windows в WIndows 2012

Я пытаюсь переместить службу со своего локального ПК, который подключается к локальным серверам компании, на сторонний выделенный сервер с SQL / Windows 2012.

Это было похоже на забивание гвоздями в моей голове, пока я добирался так далеко, и в настоящий момент служба запускается, если я вхожу в компьютер как root, открываю элемент управления службой и даю ей права "локальной системной учетной записи" для запуска (и возможность интерфейс с рабочим столом - у меня есть форма остановки / запуска Win Form, которая дает мне информацию о стороннем API, к которому он подключается) - он запускается.

То есть он запускается, за исключением случаев, когда он пытается подключиться к базе данных localhost, в которой он нуждается, за исключением следующего: Произошла ошибка, связанная с сетью или конкретным экземпляром, при установлении соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server);

Однако, если я запускаю программу .NET, которую я написал, чтобы предоставить мне подробную информацию о машине (например, диски, пользователи и время входа в систему, возможность отправить электронное письмо с помощью localhost, получить IP-адрес сервера из внешнего HTTP-запроса) и подключиться к localhost SQL Server и с той же строкой подключения (DB, User, PSW), что и моя служба, он может подключаться и извлекать информацию о пользователях SQL в представлениях sys и различиях сопоставления.

Это консольное приложение, которое я запускаю в командной строке, когда я вхожу в ящик как root, но мне не нужно открывать командную строку как admin, поскольку большинство других приложений требуют вернуть эти данные и подключиться к той же базе данных SQL. .

Если я просто попытаюсь изменить службу на использование «существующей учетной записи» ИЛИ ввести пользователя root / psw в поля и попробовать, служба даже не дойдет до того, чтобы начать с сообщения «Windows не может запустить службу xx на локальный компьютер », а в средстве просмотра событий это просто необработанное исключение .NET, которое, похоже, не может по какой-то причине (разрешения - почему, когда он был root?), регистрируя ошибку в журнале событий, который я для него создал.

Приложение: BrainiacV2.exe Framework Версия: v4.0.30319 Описание: Процесс был прерван из-за необработанного исключения. Информация об исключении: System.ArgumentException в System.Diagnostics.EventLogInternal.WriteEntry (System.String, System.Diagnostics.EventLogEntryType, Int32, Int16, Byte []) в System.Diagnostics.EventLog.WriteEntry (System.String, System.Diagnostics. EventLogEntryType) в BrainiacV2.BrainiacJobs.WriteToEventLog (System.Exception, System.String)

Эти ошибки возникают только на объединенном сервере Windows 2012 / SQL, а не на моем ПК с Win7 и удаленном сервере БД.

Я прочитал эту статью, а также многие другие, в которых говорилось, что учетной записи локального пользователя должно быть достаточно для ее запуска.

какая учетная запись Windows должна использовать службу запускать для доступа к сетевым серверам sql

Любые советы по отладке этого, когда весь основной код находится в DLL, которую использует служба, будут оценены.


person MonkeyMagix    schedule 28.07.2016    source источник


Ответы (1)


Твой вопрос сложно понять, но я постараюсь.

В Windows нет «корня», если кто-то не создал учетную запись с таким именем.

У меня есть форма Stop / Start Win

У вас не может быть формы в службе Windows. У него нет рабочего стола, и он не разрешен.

и дайте ему права на запуск "локальной системной учетной записи". . . У меня есть форма остановки / запуска Win Form, которая дает мне информацию о стороннем API, к которому он подключается) - он запускается.

Учетная запись LocalSystem ограничена компьютером, на котором она работает. У него нет сетевых привилегий. Если ваша база данных находится на другом компьютере, вы не сможете к ней подключиться. Решение состоит в том, чтобы служба запускалась от имени пользователя с правильными разрешениями.

(и возможность взаимодействия с рабочим столом -

Это не работает в более поздних версиях Windows, и даже когда это работает, это ненадежно и непредсказуемо.

поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server);

Это означает, что поставщик именованных каналов не был настроен на SQL Server, и вы пытаетесь его использовать. Вы можете либо настроить его, либо переключить подключение к провайдеру, который фактически настроен в SQL Server. Также возможно, что сервер недоступен по указанному вами имени. Можете ли вы пропинговать его, используя указанное вами имя?

Последнее сообщение указывает на то, что у вас нет блока try / catch верхнего уровня, а это означает, что ошибки являются фатальными. Их нужно ловить и обрабатывать, особенно в сервисе.

Если вы сможете сделать свой вопрос более понятным и сузить точную проблему, с которой вы столкнулись, я, вероятно, смогу вам больше помочь.

person Terry Carmen    schedule 29.07.2016
comment
Администратор дал мне root в качестве основного логина. Все известные мне ошибки не являются фатальными новостями, так как для исправления требуется полная трассировка. Может быть, это копия от Win7 до Win2012. Он работает на моей локальной учетной записи и может получить доступ к SQL и внешнему миру. Вы можете легко создавать формы Win APP, которые размещаются на панели стола и могут подключаться к Servcice. Он позволяет мне останавливать / запускать и сообщает мне, запущен ли сторонний API и работает ли это полезное настольное приложение. Так что отлично работает в этом формате на моем ПК, просто получить его в OVH - проблема - и теперь я думаю, что его французский IP (французский IPS) заблокирован сторонним API. Я могу пинговать, - person MonkeyMagix; 30.07.2016