Я пытаюсь переместить службу со своего локального ПК, который подключается к локальным серверам компании, на сторонний выделенный сервер с 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, которую использует служба, будут оценены.