2014-10-20 2 views
1

В настоящее время я разрабатываю службу отказоустойчивости для среды с использованием Dynamics AX и 2 зеркальных SQL-серверов, и у меня есть некоторые проблемы с тем, чтобы AX работал так, как я ожидаю.Dynamics AX 2012 RegConfig не работает

Я разработал сервис, который выполняет следующие действия: - попытайтесь подключиться к экземплярам SQL-серверов - запустите Dynamics AX с помощью доступного SQL-сервера.

Для этого я создал 2 файла конфигурации AX (.axc), каждый из которых указывает на SQL-сервер.

Но когда я пытаюсь запустить службу, нет матера, каким образом я использую, AX всегда начинает использовать конфигурацию, установленную с помощью инструмента конфигурации сервера AX.

Вот команда, которую я пытался запустить службу AX:

sc start AOS60$01 -regConfig=Config1 
net start AOS60$01 /"-regConfig=Config1" 

Служба всегда начинают успешно, но не заботится о параметре regConfig.

Как кто-нибудь знает, как решить эту проблему?

С уважением,

Томасом Т.

ответ

1

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

private void UpdateRegistry(string parameter) 
     { 
      RegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\services\\Dynamics Server\\6.0\\01", true); 
      key.SetValue("Current", parameter, RegistryValueKind.String); 
      key.Close(); 
     } 

public void StartLocalServiceWithCLI(string serviceToStart, string parameter) 
     { 
      try 
      { 
       UpdateRegistry(parameter); 

       Process process = new System.Diagnostics.Process(); 
       ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
       startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
       startInfo.FileName = "cmd.exe"; 
       startInfo.Arguments = string.Format("/C sc start {0} ", serviceToStart); 
       process.StartInfo = startInfo; 
       process.Start(); 

       logger.WriteInfo(string.Format("Process {0} starting, parameters [{1}]", serviceToStart, parameter)); 

      } 
      catch (Exception e) 
      { 
       logger.WriteError(string.Format("Error starting process {0}, parameters [{1}]\nError details :{2}", serviceToStart, parameter, e.Message)); 
      } 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^