Мне нужна служба, которая запускает автоматически запуск экземпляров SQL, находящихся на машине. Пока все хорошо, я могу заставить всех работать, но когда я запускаю машину с Windows 7, я получаю сообщение об ошибке 1053 (timeout). Но изменился тайм-аут до 180000, и ошибка продолжается.Служба SQL Server не запускается по коду
я тот же самый процесс в Windows 10 и работает на 100% экземпляров SQL Express 2005, 2008 и 2012.
Я не могу быть уверен, что проблема на самом деле Windows 7 или SQL Server 2005, который находится в это окна 7, если я запускаю процесс вручную, он запускается нормально.
Код:
public static bool StartServices()
{
try
{
bool startedWithSuccess = false;
foreach (var servico in GetInstances())
{
using (servico)
{
if (servico.Status != ServiceControllerStatus.Running
&& servico.Status != ServiceControllerStatus.StartPending)
{
servico.Start();
startedWithSuccess = TimeoutHelper.RetryUntilSuccessOrTimeout(() =>
{
servico.Refresh();
return servico.Status != ServiceControllerStatus.Running ? false : true;
}, TIMEOUT_IN_MILLISECONS);
}
else
{
startedWithSuccess = true;
}
}
}
return startedWithSuccess;
}
catch (Exception)
{
throw new SqlServerStartServiceException();
}
}
public static ServiceController[] GetInstances()
{
ServiceController[] services = ServiceController.GetServices().Where(x => x.ServiceName.Contains("SQL")).ToArray();
var lista = services.Where(x => x.DisplayName.Contains("Agent") ||
x.DisplayName.Contains("Browser") ||
x.DisplayName.Contains("VSS") ||
x.DisplayName.Contains("Active")).ToArray();
return services.Except(lista).ToArray();
}
Используя чистый старт хххх CMD и команда также работает.
Выполняет ли пользователь, выполняющий эту службу как обеспечительные права для запуска и прекращения обслуживания? –
Как я могу выполнить services.msc с правами администратора? В Windows 10 это не требуется? Но работает на W10. –