V AX2012 R2 je model store databáze oddělena od databáze s business daty. Pro účely upgradu existuje ještě jedna databáze – baseline model store. Konfigurace AOS v registrech Windows proto obsahuje klíče pro tři databázové servery:
- dbserver
- ModelDBServer
- ModelDBServer_baseline
(Jsou uložené v HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dynamics Server\6.0\02\{jméno konfigurace}\.)
Ale pokud otevřete Microsoft Dynamics AX 2012 Server Configuration, uvidíte pouze jedno pole pro jméno databázového serveru:
Pokud změníte hodnotu v poli Server name, oba rozbalovací seznamy databází správně pracují s novým databázovým serverem. Jenže… aktualizují se pouze dva klíče v registrech: dbserver a ModelDBServer. ModelDBServer_baseline zůstane beze změny, tudíž se AX pokusí číst baseline model store z původního serveru. Pokud jste databáze přesunuli na jiný server (jako jsme to udělali my), žádná taková databáze už na původním serveru neexistuje.
AOS nastartuje i s takovouhle konfigurací, ale baseline model store nebude k dispozici – nebudete moci porovnat objekty se staršími verzemi, detekce konfliktů vrstev nebude fungovat, nebudete moci nahrát AOD soubory do baseline… Naštěstí můžete najít užitečné zprávy v prohlížeči události (na stroji s AOS):
Object Server 01: SQL diagnostics: [Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user ‘OurDomain\AosServiceAccount’.. Connect information was: Userid = [], Database = [R2DevBaseLine], Server = [DbServerA], DSN = [], Other = []
Object Server 02: The database DbServerA\ is not recognized as a model store.
DBServerA je původní server, ne ten aktuální nastavený v konfiguraci AOS – to je celkem jasně naznačuje, kde věci selhaly.
Jediné řešení je změnit hodnotu ModelDBServer_baseline přímo v registrech.
Podobný problém může existovat i v AX2012 (bez R2), ale to jsem netestoval.