Показать сообщение отдельно
Старый 28.01.2009, 13:08   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ре-синхронизация системных таблиц на основании AOT
Сегодня интересный пост был на внутреннем форуме.
Что-то, чего мне никогда не доводилось делать, но, возможно, будет полезным кому-то еще:

Если системные таблицы в базе данных по какой-либо причине рассинхронизировались, или не создались при попытке запуске АОС, то АОС не сможет стартовать. Такое возможно, к примеру, после неудачного апгрейда.
Примерные сообщения об ошибке, которые при этом видит пользователь:

Цитата:
Object Server 05: The database reported (session 1 (-AOS-)): [Microsoft][SQL Native Client][SQL Server]Invalid object name 'SYSSERVERSESSIONS'.. The SQL statement was: "SELECT A.SERVERID,A.AOSID,A.INSTANCE_NAME,A.VERSION,A.LOGINDATETIME,A.LOGINDATETIMETZID,A.STATUS,A.LOADBALANCE,A.WORKLOAD,A.LASTUPDATEDATETIME,A.LASTUPDATEDATETIMETZID,A.RECVERSION,A.RECID FROM SYSSERVERSESSIONS A WHERE (STATUS=?)"

Object Server 05: SQL diagnostics: [Main Microsoft Dynamics Application Object Server Session]Unable to report problem. Attempted to open message 310.

Object Server 05: Dialog issued for client-less session 1: Cannot select a record in Current AOS instances (SysServerSessions). ServerId: 0, .
The SQL database has issued an error.

Object Server 05: The database reported (session 1 (-AOS-)): [Microsoft][SQL Native Client][SQL Server]Invalid object name 'SYSCLIENTSESSIONS'.. The SQL statement was: "SELECT A.SESSIONID,A.SERVERID,A.VERSION,A.LOGINDATETIME,A.LOGINDATETIMETZID,A.STATUS,A.USERID,A.SID,A.USERLANGUAGE,A.HELPLANGUAGE,A.CLIENTTYPE,A.SESSIONTYPE,A.CLIENTCOMPUTER,A.RECVERSION,A.RECID FROM SYSCLIENTSESSIONS A WHERE (SERVERID=?)"

Object Server 05: Internal Error occurred executing stored procedure when creating session for the AOS.

Эти (и другие) системные таблицы можно обновить/пересоздать, выполнив следующую SQL команду и перезапустив AOS.
X++:
update SqlSystemVariables set value = value - 1 where parm = 'systabversion'
Объяснение:
Ядро системы использует эту таблицу, а конкретно значение параметра systabversion для определения статуса синхронизации таблиц. Устанавливая значение systabversion меньшее на 1, мы "говорим" АОSу, что нужно пересоздать нужные системные таблицы.
За это сообщение автора поблагодарили: Vadik (1), Logger (4), aidsua (1).