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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2017, 11:30   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,987 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Видели, что теперь администраторы не смогут данные править через обозреватель таблиц на live environments?
Проектировщики системы идут не в том направлении.
Они строят забор там, где в нем все равно проломят дыру и будут шастать туда и сюда. Потому что людям надо!
Бессмысленно строить забор так где нужен проход.

Правильнее было бы предусмотреть удобный механизм отката изменений.
Например в оракл есть удобный механизм флешбека.
Просто пишешь запрос
X++:
SELECT * FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A
WHERE 
...
и видишь данные на любой момент времени.

Если к тебе прибежал испуганный программист/админ/юзер - шеф все пропало, гипс снимают, клиент уезжает "Я нечаянно удалил тучу данных!"
то просто берешь и пишешь

X++:
SELECT * FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A
WHERE 
...
AND NOT EXISTS
    (
         SELECT 'x' FROM SCHEMA.TABLENAME
                B
         WHERE (
                    SUBSTR(NLS_LOWER(B.DATAAREAID),1,4) = SUBSTR(NLS_LOWER(A.DATAAREAID),1,4)
                     AND B.recid = A.recid
               )
    )
И видишь то что он грохнул.
Ну может выполняешь несколько раз этот запрос с перечнем полей count(*) на разную дату время чтобы поймать лучше момент времени с которого ндао взять удаленные впоследствии данные.

И затем восстанавливаешь их

X++:
INSERT INTO SCHEMA.TABLENAME
(
FIELD1, FIELD2 ...
) 

SELECT FIELD1, FIELD2 ... FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A
WHERE 
...
AND NOT EXISTS
    (
         SELECT 'x' FROM SCHEMA.TABLENAME
                B
         WHERE (
                    SUBSTR(NLS_LOWER(B.DATAAREAID),1,4) = SUBSTR(NLS_LOWER(A.DATAAREAID),1,4)
                     AND B.recid = A.recid
               )
    )
Все.

Как бы в SQL Server штатно такое сделать ? Вроде до сих пор нельзя.
Теги
#синдромвахтера, change tracking

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: Microsoft has Released the 4th Platform Update for Dynamics 365 for Operations Blog bot DAX Blogs 0 12.04.2017 02:30
lcs: Issue with Update tile in Microsoft Dynamics 365 for Operations platform update 4 release on LCS Blog bot DAX Blogs 0 25.02.2017 02:19
vasantharivali: Enhanced SysTableBrowser – View only the fields you want in table browser Blog bot DAX Blogs 0 07.10.2016 15:11
fed: Net requirements update in MRP Module and Working Set of MRP Blog bot DAX Blogs 14 08.05.2012 13:09
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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