AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.02.2010, 14:38   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Синхронизация
Есть такая ситуация:

SQLDictionary соотвествует АОТ. Но структура каждой таблицы в базе отличается от описания его в SQLDictionary.

Например:
Есть таблица, у которой 5 полей. В АОТ так оно и есть, в sqlDictionary то же самое.
Но в БД эта таблица имеет 3 поля. Как сделать так, чтобы в базе появились эти 2 недостающих поля?

Первый вариант, удалить строки в SQLDictionary, указывающие на эти 2 поля. Тогда при синхронизации таблицы аксапта создаст поля в БД. Это все работает, если бы не одно но. Подобных таблиц очень много. И проверять каждую и удалять в SQLDictionary строки уйдет очень много времени. Есть какие-нибудь другие решения:?
Старый 17.02.2010, 15:15   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А если удалить весь SQLDictionary?
Старый 17.02.2010, 15:32   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
А если удалить весь SQLDictionary?
тогда при синхронизации он выдаст ошибку о том, что объект уже есть в базе. То есть чтобы сделать синхронизацию, надо будет удалять таблицы (или отдельные поля) в БД напрямую. А это, ест-но приведет к потере данных.

Последний раз редактировалось Eldar9x; 17.02.2010 в 15:36.
Старый 17.02.2010, 15:36   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А из формы СКЛ администрирования пробовали запускать синхронизацию (Исправление/Синхронизацию)?
За это сообщение автора поблагодарили: Eldar9x (5).
Старый 17.02.2010, 15:37   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А после удаления SQLDictionary нужно выполнить процедуру "Проверка/Синхронизация" в Администрировании-Периодические операции.
В 4.0 SP2 этот пункт меню запретили, но его можно легко разрешить.
Только удалять SQLDictionary надо при запущенной АХ
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Eldar9x (5), S.Kuskov (1).
Старый 17.02.2010, 16:01   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А после удаления SQLDictionary нужно выполнить процедуру "Проверка/Синхронизация" в Администрировании-Периодические операции.
В 4.0 SP2 этот пункт меню запретили, но его можно легко разрешить.
Только удалять SQLDictionary надо при запущенной АХ
Плохому людей учите. Или вы забыли зачем его в 4-ке запретили ?
Там была бага которая портила данные. И вместо того чтобы её вылечить - отключили нафиг всю функцию. (К счастью это только для 4-ки)
Старый 17.02.2010, 16:32   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Плохому людей учите. Или вы забыли зачем его в 4-ке запретили ?
Там была бага которая портила данные. И вместо того чтобы её вылечить - отключили нафиг всю функцию. (К счастью это только для 4-ки)
Да, было дело: 3.0 - SQL Администрирование - Таблицы - Проверить/синхронизовать

Цитата:
Check Synchronize loses notes in DocuRef - DISABLE this functionality
Но:
1. Как-то на моей памяти не так много людей пользовались функионалом примечаний (не путать с прикрепленными документами)
2. Я все галки снимаю - и в общем-то самой коррекцией/синхронизацией не предлагаю пользоваться.
А убивает данные именно синхронизация, а не восстановление SQL Dictionary.

Так что в данном случае - можно не бояться.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 17.02.2010 в 16:38.
За это сообщение автора поблагодарили: Logger (4).
Старый 17.02.2010, 16:00   #8  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Проверка/синхронизация еще не пробовал. А с какими параметрами ее запустить?
Старый 17.02.2010, 16:06   #9  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
так а альтернативы все равно нет, разве что джоб написать, который пройдется по таблицам и удалит неверные записи из sqlDictionary
Старый 17.02.2010, 16:13   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
так а альтернативы все равно нет, разве что джоб написать, который пройдется по таблицам и удалит неверные записи из sqlDictionary
Так вам-то все равно. У вас же 3-ка.
Старый 17.02.2010, 16:16   #11  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Первый вариант, удалить строки в SQLDictionary, указывающие на эти 2 поля. Тогда при синхронизации таблицы аксапта создаст поля в БД. Это все работает, если бы не одно но. Подобных таблиц очень много. И проверять каждую и удалять в SQLDictionary строки уйдет очень много времени. Есть какие-нибудь другие решения:?
SQLDictionary физически есть в серверной базе данных. Не вижу проблем написать скрипт сравнения структур таблиц на самом сервере и того, что записано в SQLDictionary. Т.е. средствами самого сервера. Вне Axapta.

Ну, да, относительно долго писать этот скрипт. Но выполняться он будет очень быстро.
Старый 18.02.2010, 13:22   #12  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Проверка/Синхронизация помогла. Даже sqlDictionary не пришлось чистить. Единственный ее недостаток, как оказалось, - не восстанавливается поля, созданные по EDT с массивом. Спасибо за идею!
Теги
sqldictionary, синхронизация баз

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Долгая синхронизация CDR DAX: Программирование 15 07.11.2008 15:46
Синхронизация SP4 -> SP5 Logger DAX: Программирование 4 09.08.2006 13:10
навязчивая синхронизация Антон Солдатов DAX: Функционал 11 22.04.2005 11:04
Репликация и синхронизация Tays DAX: Администрирование 12 24.11.2004 12:18
синхронизация с outlook alpine DAX: Функционал 7 09.06.2004 13:53
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:59.