|
Dynamics NAV (Navision) Заметки про Dynamics NAV (ранее Navision) и аддон LS Retail |
![]() |
|
Опции темы | Поиск в этой теме |
#1
|
|||
|
|||
Попробовал установить второй SErver Tier. Удалось с переменным успехом.
1. Надо скопировать папку C:\Program Files\Microsoft Dynamics NAV\60\Service в C:\Program Files\Microsoft Dynamics NAV\60\Service2 2. Надо запустить cmd и выполнить команду: sc create MicrosoftDynamicsNAVServer$test binpath= "C:\Program Files\Microsoft Dynamics NAV\60\Service2\Microsoft.Dynamics.Nav.Server.exe $test" DisplayName= "Microsoft Dynamics NAV Server test" start= demand type= own obj= "NT Authority\NetworkService" Слово test можно поменять на название службы. 3. В файле CustomSettings.config я изменил такие строки <add key="DatabaseName" value="ddd60"></add> - это я базу данных так обозвал. <add key="ServerInstance" value="test"></add> - чтоб не путаться кто из них служба, а кто экземпляр, поэтому пока всех назвал одинаково <add key="ServerPort" value="8046"></add> - не хочу использовать инструмент PortSharing, пока не разберусь со всем досконально. <add key="WebServicePort" value="8047"></add> 4. В оснастке "Службы" появится служба Microsoft Dynamics NAV Server test. Ее нужно запустить. 5. Чтобы подключиться, в ролеориентированном клиенте, я указывал строку подключения localhost:8046/test (Select server). Чтобы подключаться к нужному серверу по-умолчанию, следует изменить файл ClientUserSettings.config, расположенный: C:\Documents and Settings\<username>\Local Settings\Application Data\Microsoft\Microsoft Dynamics NAV\ - Windows XP и Windows 2003 Server C:\Users\<username>\AppData\Local\Microsoft\Micros oft Dynamics NAV\ - Vista. А вот с Web Services вышла проблема. Я ее на mibuso планирую задать, поэтому она будет по-английски. I think, you should create the second Microsoft Dynamics NAV Business Web Services. I've tried to do this with sc command and found out the strange thing. I used the command: SC CREATE MicrosoftDynamicsNavWS$test binpath= "C:\Program Files\Microsoft Dynamics NAV\60\Service2\Microsoft.Dynamics.Nav.Server.exe $test" DisplayName= "Microsoft Dynamics NAV Business Web Service Instance 2" type= own start= demand depend= HTTP The service appeared in service snap-in. But when I started this server in event view appeared the event: Service MicrosoftDynamicsNavServer$test is listening to requests at net.tcp://apanko-pc:8046/test/Service. But IMHO it should be: Service MicrosoftDynamicsNavWS is listening to requests at http://apanko-pc:8047/test. Of course I cannot see web services, but I can to open RTC and connect to "localhost:8046/test", even if I do not create Nav Server at all. Here are changed string in CustomSettings.config: <add key="DatabaseName" value="ddd60"></add> <add key="ServerInstance" value="test"></add> <add key="ServerPort" value="8046"></add> <add key="WebServicePort" value="8047"></add> Where is my mistake? http://www.mibuso.com/forum/viewtopi...151669#p151669 Последний раз редактировалось apanko, 18.01.2009 в 01:53. |
#2
|
|||
|
|||
Цитата:
Как выяснилось, Freddy (разработчик из MS) тоже ни разу не смог установить WS с помощью командной строки. Поэтому он написал пару bat файлов, чтобы с их помощью устанавливать столько сервисов, сколько нужно. Вот ссылка на его блог, а там ссылка на bat файлы. Я проверил, они работают. http://blogs.msdn.com/freddyk/archiv...ice-tiers.aspx UPD. Еще полезная ссылка по поводу ручной установки: http://blogs.msdn.com/nav/archive/20...-remember.aspx Последний раз редактировалось apanko, 21.10.2009 в 12:29. |
#3
|
|||
|
|||
Не прошло и трех лет как удалось вернуться к работе с NAV 2009. Само собой версия под R2.
Итак есть прекрасное ISV решение надо которым надо плотно поработать. Есть версия Кронус. С которой тоже связь терять не хочется. Еще меньше хочется редактировать конфиг файл и перезапускать сервер. Решал возникшую проблему следующим образом: 1. Установить второй Service Tier. Это делается так: 1. Скопировать папку Service (у меня получилась папка ServiceMyEngine) 2. Зарегистрировать службы (сам сервер плюс сервер веб служб) с помощью командной строки: Код:
Внимание, с этой командной строкой промучился довольно долго – симптом как в первом сообщении темы. Сервер веб служб никак не хотел быть именно им, а устанавливался как сам сервер. Важные моменты: 1. Название службы: MicrosoftDynamicsNAVWS – для веб служб, все прочее для service tier. Рекомендуется для service tier пользовать MicrosoftDynamicsNAV. Все вариации, если служб будет много модифицировать через $ServiceName – одинаковый для обоих служб 2. В параметре binpath сервера веб служб указать тоже что и для service tier, не забыть ту часть которая с $ServiceName 3. Для сервера веб служб в параметре type= share, именно так, а не own Не важный момент, в параметре depend у сервера веб служб можно не ставить ссылку на service tier, они на самом деле независимо работают. Последний раз редактировалось apanko, 05.06.2013 в 13:16. |
#4
|
|||
|
|||
Этап номер 2.
Итак, вторая служба есть, но чтобы ее заставить работать надо указать в файле CustomSetting.config указать порты (у меня он притаился тут C:\Program Files (x86)\Microsoft Dynamics NAV\60\ServiceMyEngine) Если делать этого не хочется, то можно воспользоваться службой PortSharing (в Win8RU оназовется как Служба общего доступа к портам Net.Tcp. Ее надо запустить. Этопервый шаг. Втогой шаг, службы Dynamics NAV должны быть зависимы от этой службы. Так как при демо инсталляции такой параметр не использовался – службы придется перерегистрировать, а перед этим удалить: Код:
Что делает прекрасный скрипт: Останавливает службы Dynamics NAV (результат демо установки) Удаляет службы Dynamics NAV Стартует службу NetTcpPortSharing Устанавливает два service tier суказанием, что они зависимы от NetTcpPortSharing Внимание. Все это делается в командной строке cmd, но ее надо запустить отимени администратора. Последний раз редактировалось apanko, 22.07.2013 в 18:18. |
#5
|
|||
|
|||
Цитата:
Кстати файл CustomSetting.config все равно приедтся править - указать имя Instance - а то как PortSharing разберется кому какие веб службы раздавать: Это Кронус, который я не редактировал: http://localhost:7047/DynamicsNAV/WS...0Ltd./Services А это ISV решение http://localhost:7047/MyEngine/WS/Me...0Ltd./Services Ниже строка в файле, которую и надо менять: Код:
|
#6
|
|||
|
|||
После того как службы установлены - неплохо бы к ним подключаться.
За то, к чему подключаться отвечает файл ClientUserSetting.config (C:\Users\apanko\AppData\Local\Microsoft\Microsoft Dynamics NAV) В нем есть параметры: Код:
туда надо либо порт вписать (это если Port Sharing не пользовать) либо Instance. Легко догадаться, что мы не для того вторую службу заводили, чтобы каждый раз параметры править, да еще в таком странном месте. поэтому я поступил проще - скопировал файл, назвал его ClientUserSettingsMyEngine.Config, в нем поменял Instance. Дело осталось за малым научить RTC выбирать нужный настроечный файл. Это оказалось просто - надо лишь воспользоваться знанием о параметрах, передаваемых в RTC. Для начала можно воспользоваться параметром /? - он нам и расскажет правду. У меня получился вот такой ярлык, чем я и остался доволен Код:
|
#7
|
|||
|
|||
Ну и напоследок немножко полезного:
http://msdn.microsoft.com/en-us/library/dd301437.aspx - инструкция с MSDN http://blogs.msdn.com/b/nav/archive/...-remember.aspx - грабли http://blogs.msdn.com/b/freddyk/arch...tiers-sp1.aspx - набор батников от freddy http://blogs.msdn.com/b/freddyk/arch...tiers-sp1.aspx - разбор устройства батников от freddy И для тех, кому лень читать - совет как заполнить список серверов, появляющихся при нажатии в RTC кнопки Microsoft Dynamics NAV -> Выбрать Сервер. За это отвечает параметр Код:
Из уже знакомого нам файла ClientUserSetting.config (C:\Users\apanko\AppData\Local\Microsoft\Microsoft Dynamics NAV) |
#8
|
|||
|
|||
Цитата:
Кстати говорят, что удалять не надо. Можно переконфигурировать с помощью той же sc sc config MicrosoftDynamicsNavServer depend= NetTcpPortSharing/HTTP |
#9
|
|||
|
|||
Конфиг клиента
Поставил клиента отдельно, хотел прописать путь к серверу. Файл
C:\Users\pankoa\AppData\Local\Microsoft\Microsoft Dynamics NAV\ClientUserSettings.Config (как и сам каталог) не обнаружил. Они появились после первого запуска клиента. Теперь хоть ясно что значила картинка из сообщения http://apanko.ru/showpost.php?p=20294&postcount=20 |
#10
|
|||
|
|||
Получил такую ошибку:
--------------------------- Microsoft Dynamics NAV --------------------------- The Microsoft Dynamics NAV Server cannot connect the Change Listener to SQL Server because of the following error: Login failed for user 'DOMAIN\NAVSERVER$'. --------------------------- ОК --------------------------- Решил инструкцией по ссылке (настройкой Object Change Listener) NAV Server запущен под Network Services http://msdn.microsoft.com/en-us/library/dd568739.aspx |
#11
|
|||
|
|||
Встретился еще с ошибкой. Причем если RTC запустить на том же компе, что и NAV Сервер, то все ок работает. Есть мнение что из-за Delegation.
--------------------------- Microsoft Dynamics NAV --------------------------- The login failed when connecting to SQL Server RU01SQL02. --------------------------- Для настройки применял официальную пошаговую инструкцию: http://msdn.microsoft.com/en-us/library/dd301254.aspx Можно пользоваться, если решили запускать НавСервер и СКЛ под доменными пользователями (можно разными). В целом адекватно, за исключением двух моментов: 1. для функции setspn лучше пользовать параметр -s, он в отличие от параметра -а умеет проверять дубли, а дубли - источник головняка. 2. в setspn -S MSSQLSvc/NAVSQL.yourDomain.yourCompany.com:1433 yourDomain\yourUser, yourDomain\yourUser - это пользователь под которым запускается служба, в данном примере - служба SQL Для проверки удалось ли зарегить что надо используется команда setspn -L Domain\User 3. Раздел Delegating Access to the SQL Server Service имеет пару мутных моментов, я их прояснил ниже. 3.1. Click Start, and then click Run. 3.2. In the Open field, type dsa.msc. This opens the Active Directory Users and Computers utility. 3.3. Right-click the node for the domain where you have installed Microsoft Dynamics NAV, and then click Find. 3.4. In the Find Users, Contacts, and Group dialog box, type the name of the domain user (Пользователем под которым запущена служба Nav Server) in the Name field, and then press ENTER. 3.5. In the Search results area, right-click the domain user, and then click Properties. 3.6. On the Delegation tab, click Trust this user for delegation to specified services only, and then click Use Kerberos only. 3.7. Click Add to open the Add Services dialog box. 3.8. Click Users or Computers, and then specify the domain user (Пользователь под которым запущен SQL Server). 3.9. In the list of services for the domain user, click MSSQLSvc, which is the SQL Server service. 3.10. Click OK to close the Add Services dialog box. Continue clicking OK to close all open dialog boxes Еще раз. Базовая инструкция нацелена на использование доменных аккаунтов для запуска служб (как NAV так и SQL). Для тех кто решил запускать какие-либо службы под Network Services стоит ознакомиться также с http://blogs.msdn.com/b/nav_develope...-nav-2009.aspx Там как раз написано как делегировать компьютеру, а не пользователю. Где нужно создавать SPN, а где не нужно. Кстати параметр <add key="DelegateInfo" value="DomainUser"></add> ни для сервера, ни для клиента не понадобился. Также полезные ссылочки http://msdn.microsoft.com/en-us/library/dd568720.aspx |
#12
|
|||
|
|||
И конечно для полноты картины вот еще ошибка:
--------------------------- Microsoft Dynamics NAV --------------------------- Удаленный сервер не удовлетворяет требованию взаимной проверки подлинности. --------------------------- ОК --------------------------- Помогло изменение файла ClientUserSettings Было: <add key="Server" value="ru01nav01" /> Стало: <add key="Server" value="ru01nav01.myDomain.loc" /> Для информации, так как у меня делегирование настроено суровое: Trust this user for delegation to specified services only and Use Kerberos only То в файле также стоят параметры <add key="AllowNtlm" value="false" /> <add key="ServicePrincipalNameRequired" value="true" /> |
#13
|
|||
|
|||
Цитата:
И еще дескрипшн можно задать этой же командой. sc description. А то вечно не понять, что же за служба. Код:
|
#14
|
|||
|
|||
Немного странное
SQL сервер переехал на новое место.
Надо было настроить Delegation, что и было сделано, но не совсем корректно. При создании SPN были указанные некорректные аккаунты. Т.е. для SQL указали, что он запускается под NAV пользователем и наоборот. Выявив проблемы с помощью команд: setspn -L domain\user и setspn -x удалил лишние spn с помощью Setspn -D (далее точно также как при регистрации): setspn -D DynamicsNAV/NAVSERV.yourDomain.yourCompany.com:7046 yourDomain\yourNavSrvUser setspn -D MSSQLSvc/NAVSQL.yourDomain.yourCompany.com:1433 yourDomain\yourSqlSrvUser setspn -D MSSQLSvc/NAVSQL.yourDomain.yourCompany.com yourDomain\yourSqlSrvUser Зарегистрировал как надо, перезапустил сервер, указал в ActiveDirectory в свойствах Delegation, а по прежнему не работает. Решил, что это еще не просрочен Session ticket. Чтобы принудительно его обнулить не придумал ничего лучшего чем запустить NAV Server от неделегированного аккаунта (а если честно, то под SqlSrvUser). Получил ошибку: "Ошибка вызова SSPI, см. внутреннее исключение." Вернул все назад (аккаунт под которым запускал NAV Server), перезапустил сервер и все заработало. Не факт, что причина в этом, но почему бы не записать себе на память. Последний раз редактировалось apanko, 23.07.2013 в 16:59. |
#15
|
|||
|
|||
Итак, есть три машины.
SQL отдельно, запущен под SQL-account NAV Service отдельно, запущен под NAV-account RTC на компе пользователя, соответсвенно под логином пользователя. Настроены Delegation. Надо поднять еще одну службу. Дело не хитрое - всеж заготовки и инструкции есть (сам писал): 1. Папку скопировал 2. sc create выполнил (см выше). 3. NetTcpPortSharing службу запустил. 4. Для старой службы выполнил sc config (см выше). В общем молодец. Как бы не так: Новая служба запускается, старая нет. Проверил события - диагноз такой: Цитата:
Оказывается порт шаринг доступен не всем, а только:
Инструкция как это делать находится тут: http://msdn.microsoft.com/en-us/library/aa702669.aspx А я ниже расскажу о граблях которые открыл (а открыл я их несколько). Во-первых где этот конфиг искать: Лучший способ - посмотреть в реестре, ключ "ImagePath" в ветке [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\NetTcpPortSharing] Потому как поиск в каталоге Windows дает несколько ссылок (у меня был 3 и 4.5 версия, плюс под 32 и 64 битные операционки). В целом ошибиться трудно - при попытке редактировать файл от версии 3 было получено сообщение Access Denied. Ну а версию операционной системы на сервере узнать тоже не проблема. Итак, файл найден. Далее его надо редактировать, я добавил вот эту секцию: Код:
Обратите внимание, как я подписал принадлежность СИДа, не через двойной слеш, как в примере. Потому как двойная черта стабильно выдавала ошибку. Подсказать как я узнал СИД для своего NAV-account? Подсмотрел в SQL Server Management Studio, в таблице Windows Access Control. Почему там, а не в Windows Login - да просто через роль было его проще идентифицировать среди толп SID'ов прочих пользователей. Ну и конечно - службы надо перезапустить, чтобы конфиг начал работать. Вот службы которые надо погасить перед редактированием и снова запустить после:
|
#16
|
|||
|
|||
Ну и конечно для нового инстанса - новое делегирование.
Делается в два шага: setspn изменение в AD setspn -s MyEngine612RU_DEV/ru01nav01.MyDomain.loc:7046 MyDomain\ru01nav01_nav_srv MyEngine612RU_DEV - новый инстанс ru01nav01.MyDomain.loc - сервер где он крутится MyDomain\ru01nav01_nav_srv - аккаунт под которым запущен NAV Service А AD - в приложенной картинке, где ru01sql03_srv - sql-account http://apanko.ru/attachment.php?attachmentid=147&stc=1&d=1374141433 |
#17
|
|||
|
|||
Пользуясь свой же инструкцией поставил третий сервер НАВ на машину.
Запустил - получил ошибку: Цитата:
Причина оказалась проста - когда редактировал файл CustomSettings.Config Не изменил содержимое тега <add key="ServerInstance" value="хххх"> Оно оказалось таким же как у уже запущенного сервера. Понятно, что NetTcpPortSharing в таком случае запросы разрулить не может и службу запускать не пускает. |
#18
|
|||
|
|||
Столкнулись с проблемой.
Установлен NAV 2009 R2, service tier + web services. Решили установить еще одну парочку - service tier + web services. порт шаринг использовать не стали. Просто поменяли порты. Служба с Service Tier запускается отлично, а Web Service ругается: Код:
Поискали в интернете и нашли рецепт (использовать через CMD, я запускал под администратором): Код:
По теме вот данная статья будет полезна http://msdn.microsoft.com/ru-ru/library/ms733768.aspx |