Под какой учетной записью должна работать служба Windows в Windows 2012
Я пытаюсь переместить службу с локального ПК, который подключается к локальным серверам компании, на сторонний выделенный сервер с SQL/Windows 2012.
Это было похоже на то, как в мою голову забивают гвозди, и я в данный момент запускаю службу, если я захожу на компьютер с правами root и открываю элемент управления службой и предоставляю ему привилегии для запуска "локальной системной учетной записи" (и возможность интерфейс с рабочим столом - у меня есть Win / Stop Form, который дает мне информацию о стороннем API, к которому он подключается)- он работает.
То есть он запускается, за исключением случаев, когда он пытается подключиться к базе данных localhost, которая ему нужна, он взрывается, за исключением следующего: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть подключение к SQL Server);
Однако, если я запускаю программу.NET, которую я написал, чтобы дать мне подробную информацию о машине (например, диски, пользователи и время входа в систему, возможность отправлять электронную почту с localhost, получать IP-адрес сервера из внешнего HTTP-запроса) и подключаться к localhost SQL Server и с той же строкой подключения (DB, User, PSW), что и мой сервис, затем он может подключаться и извлекать информацию о пользователях SQL в представлениях sys и различиях сопоставления.
Это консольное приложение, которое я запускаю в командной строке, как при входе в систему в качестве пользователя root, но мне не нужно открывать командную строку от имени администратора, поскольку большинству других приложений требуется вернуть эти данные и подключиться к той же базе данных SQL.,
Если я просто попытаюсь изменить службу, чтобы использовать "существующую учетную запись" ИЛИ ввести в поле пользователя root / psw и попытаться, служба даже не заходит так далеко, как начиная с "Windows не может запустить службу xx на локальный компьютер ", и в средстве просмотра событий это просто необработанное исключение.NET, которое, по-видимому, не может по какой-то причине (права доступа - почему, когда он был корневым?) регистрировать ошибки в журнале событий, который я для него создал.
Приложение: 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, используемой службой, был бы оценен.
1 ответ
На ваш вопрос трудно ответить, но я постараюсь.
В Windows нет "root", если кто-то не создал учетную запись с таким именем.
У меня есть форма Стоп / Старт Win
Вы не можете иметь форму в службе Windows. Это не получает рабочий стол и не допускается.
и дать ему привилегии "локальной системной учетной записи" для запуска.,, У меня есть форма Win Stop / Start, которая дает мне информацию о стороннем API, к которому она подключается)- она запускается.
Учетная запись LocalSystem ограничена машиной, на которой она запущена. У него нет сетевых привилегий. Если ваша база данных находится на другом компьютере, вы не сможете подключиться к ней. Решение состоит в том, чтобы служба работала как пользователь с правильными разрешениями.
(и возможность взаимодействия с рабочим столом -
Это не работает в более поздних версиях Windows, и даже когда это работает ненадежно и непредсказуемо.
Поставщик: поставщик именованных каналов, ошибка: 40 - Не удалось открыть соединение с SQL Server);
Это означает, что поставщик именованных каналов не был настроен на SQL Server, и вы пытаетесь его использовать. Вы можете либо настроить его, либо переключить свое соединение на провайдера, который фактически настроен в SQL Server. Также возможно, что сервер недоступен, используя указанное вами имя. Можете ли вы пинговать его, используя указанное вами имя?
Последнее сообщение указывает, что у вас нет блока try / catch верхнего уровня, что означает, что ошибки являются фатальными. Вы должны поймать и обработать их, особенно в службе.
Если вы сможете сделать ваш вопрос более понятным и сузить круг проблем, с которыми вы столкнулись, я, вероятно, смогу вам помочь.