2015-11-16 3 views
0

Возможно ли получить имя экземпляра вместо Имя сервера в X ++?AX 2012 - Получить имя экземпляра не имя сервера в X ++

Прилагаемое изображение показывает поле Я ищу:

AX Config

Когда я использую xSession.AOSName(); она возвращает имя сервера и, когда я использую sysServerSessions..Instance_Name; пустая строка возвращается. Поле Instance_Name имеет только «01» в базе данных, поэтому оно все равно будет неверным, если оно вернет значение.

ответ

4

Instance name (optional), я считаю, что это только имя папки и отображаемое имя службы. Поэтому, когда вы создаете несколько экземпляров, создается папка C:\Program Files\Microsoft Dynamics AX\60\Server\[InstanceName]\, а затем служба AOS с отображаемым именем этого экземпляра.

Если вы действительно этого хотите, вы можете перечислить папку и проанализировать ее с помощью регулярного выражения или любого количества других методов. Чтобы перечислить папку, создать этот сервер статического метод где-то и называют его:

static server FilenameOpen pathServer() 
{ 
    return xInfo::directory(DirectoryType::Bin); 
} 

Существует также ServerId, который я не думаю, что это то же самое, как Instance Name, но это в SysServerConfig таблицы:

while select sysServerConfig 
{ 
    info(strFmt("%1", sysServerConfig.ServerId)); 
} 

и ServerId является производной величиной от AOSId и имя, и т.д. Вы можете видеть, как он получен в этом методе: \Data Dictionary\Tables\SysServerConfig\Methods\delete

+0

Спасибо, Алекс. Создание сервера Статический метод работал. Я добавил дополнительную логику для получения имени экземпляра. –

0

Ниже приведена логика ответа Алекса, чтобы получить имя экземпляра.

static server str getAOSInstanceName() 
{ 
    str serverPath; 
    str instanceName; 

    int fullPathLen; 
    int serverNameEnd; 
    int instanceNameStart; 

    //Get the full path of the AOS Server install. 
    serverPath = xInfo::directory(DirectoryType::Bin); 

    fullPathLen = strLen(serverPath); 

    //Get the location of where the Instance Names Ends. "-5" represents "\bin\" in the full path. 
    serverNameEnd = fullPathLen - 5; 

    //Get the location where the Instance Name Starts - 1. 
    instanceNameStart = strFind(serverPath, @"\", serverNameEnd, - fullPathLen); 

    //Get the Instance Name. 
    instanceName = subStr(serverPath, instanceNameStart + 1, serverNameEnd - serverNameStart); 

    return instanceName; 
} 
Смежные вопросы