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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.06.2010, 08:11   #1  
alesander is offline
alesander
Участник
 
34 / 10 (1) +
Регистрация: 30.05.2010
Вопрос по удалению компании из Аксапты
Всем привет!
Вопрос: при удалении компании из аксапты происходит ли ее реальное удаление из SQL базы? Или записи в бд только помечаются как "неактивные" и перестают отображаться в аксапте?
Если данные только помечаются как неактивные, то как их реально удалить из базы SQL? Может кто уже сталкивался с подобным?
Используется AX 4.0, база крутится на SQL 2008.
Старый 30.06.2010, 09:16   #2  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
По выбранной компании удаляются данные из всех таблиц.

Удалить компанию DAT не получится:
Цитата:
Компания DAT не может быть удалена, поскольку содержит необходимую системную информацию.
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 30.06.2010, 09:56   #3  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Удаление компании, при большом количестве данных, процесс достаточно длительный, и никак себя для пользователя не проявляющий.
Создается полное впечатление что все взвисло.
Часто так и думают, что, мол, все повисло, надо что-то делать, и завершают процесс Аксапты принудительно.

После этого, компания оказывается удалена (данные в DataArea), но данные для этой компании во всех таблицах удалится не успевают. Остается мусор, и иногда достаточно объемный.

Если процесс не прерывать и дождаться успешного завершения удаления компании, то данные компании во всех таблицах должны быть удалены из базы.
Старый 30.06.2010, 10:03   #4  
alesander is offline
alesander
Участник
 
34 / 10 (1) +
Регистрация: 30.05.2010
ясно. спасибо за ответ
Старый 30.06.2010, 14:49   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AlGol Посмотреть сообщение
После этого, компания оказывается удалена (данные в DataArea), но данные для этой компании во всех таблицах удалится не успевают. Остается мусор, и иногда достаточно объемный.
Э-э-э... Всегда считал, что удаление происходит в рамках транзакции.
Похоже опять надо идти в Аксапту и проверять.
__________________
полезное на axForum, github, vk, coub.
Старый 30.06.2010, 15:28   #6  
Oz is offline
Oz
Участник
Аватар для Oz
 
293 / 51 (2) ++++
Регистрация: 22.08.2002
Адрес: Москва
В 4-ке ещё не пробовал, но в 3-ке наблюдал неоднократно, что штатное удаление компании оставляет в базе достаточно много хвостов в виде данных во многих таблицах с dataareaid = id удалённой компании. Т.е. для полного удаления данных компании после процедуры в Аксе приходилось ещё дочищать средствами SQL.
__________________
Здесь могла быть Ваша реклама!
Старый 30.06.2010, 16:12   #7  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
Всем привет!

Частенько сталкиваясь с этой бедой используем SQL скриптик на той Базе Данных откуда приходится удалить компанию.

Выкладываю на обозрение может кому пригодится.

X++:
declare @name nvarchar(128)

declare tables_cursor cursor for
select [name] from sysobjects
where type = 'U'

open tables_cursor

fetch next from tables_cursor
into @name

while @@fetch_status = 0
begin

--print @name
exec('delete ' + @name + ' where dataareaid 
in
(
select id from dataarea 
where id like ''ТУТ ИМЯ УДАЛЯЕМОЙ КОМПАНИИ например tst''
)'
)

fetch next from tables_cursor
into @name
end

close tables_cursor
deallocate tables_cursor
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
За это сообщение автора поблагодарили: Qaz Qwerty (1).
Старый 30.06.2010, 16:24   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от zZ_TOP_Zz Посмотреть сообщение
X++:
....
select id from dataarea 
where id like ''     tst''
....
Не покатит, если есть виртуальные компании.
__________________
полезное на axForum, github, vk, coub.
Старый 30.06.2010, 16:47   #9  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
Не покатит, если есть виртуальные компании.
Согласен на счет виртуальных, но если их нет - можно юзать
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
Старый 30.06.2010, 17:18   #10  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А я не согласен. Удаление конкретной реальной компании, IMHO, не должно сопровождаться удалением данных, общих для нескольких компаний (о виртуальных ли компаниях идет речь или о таблицах, данные в которых хранятся не в разрезе компаний).

С мусором от удаления компаний встречался в 3.0. Я тогда сделал заключение, что если удалить компанию в двухзвенке, то при остановке АОСа он сливает свой кэш в базу, не зная о том, что ее уже нет (по крайней мере мусор у меня не создавался на локальной инсталляции, но регулярно создавался на рабочей БД). Вообще я не уверен точно. Но мусор я заметил в тех таблицах, для которых включено кеширование (типа клиентов, поставщиков, плана счетов), и только в тех, с которыми наверняка могли работать в день удаления компании.

При работе через АОС в 4.0 эффект с мусором мне не удалось воспроизвести. Нужно попробовать такой финт если есть кластер из АОСов.

Что касается удаления... я тогда пробовал просто импортировать пустой .DAT файл (кажется, создавал новую компанию и выгружал все данные в .DAT файл) в компанию с удалением компании перед импортом. В смысле это непрограмистский вариант.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: mazzy (2).
Старый 30.06.2010, 19:11   #11  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
В своё время написал скрипт для удаления мусора. С виртуальными компаниями работало тоже корректно, но давно не тестировал
Может, пригодится...

Код:
-----------------------------------------
-- М.Андреев 28.04.2005
-- Скрипт удаляет все данные "чужих" компаний, которых не должно быть в текущей базе
-- Запускать нужно от пользователя-владельца таблиц аксапты
----- BEGIN OF SCRIPT ------------------ 

declare @name varchar(1000);

DECLARE CT CURSOR FOR 
	select name
		from dbo.sysobjects
		where xtype = 'U'
			and id in
		(select id
		from dbo.syscolumns 
		where name = 'DATAAREAID');

OPEN CT
WHILE 1=1
begin
FETCH FROM CT INTO @name
     IF @@fetch_status=-1 
        BREAK;
     IF @@fetch_status=-2
        CONTINUE;
	exec ('delete from '+@name+
	'  where NOT DATAAREAID IN (select id from DATAAREA)');
     PRINT @name;
    
end;

DEALLOCATE CT
--------- END OF SCRIPT ----------
__________________
Михаил Андреев
https://www.amand.ru
За это сообщение автора поблагодарили: alex55 (1).
Старый 30.06.2010, 20:06   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
В своё время написал скрипт для удаления мусора
Я сейчас наверное какую-нибудь глупость спрошу, но не проще ли штатно заново создать компанию и удалить, чем терзать БД всякими скриптами с форумов?
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: mazzy (2).
Старый 01.07.2010, 00:36   #13  
AX2009
Гость
 
n/a
А мне вот интересно, в каком случае на рабочем (не тестовом) приложении возникает необходимость удаления компании?
Старый 01.07.2010, 01:31   #14  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Цитата:
Сообщение от AX2009 Посмотреть сообщение
А мне вот интересно, в каком случае на рабочем (не тестовом) приложении возникает необходимость удаления компании?
Вообще не должна возникать. Но в моей практике недоверчивые бухи желали отработать на пробу, например, книгу покупок или закрытие периода непременно в рабочем приложении. Клонировали им компанию, они там игрались, потом мы её грохали.

В 2.5 и 3-ке действительно данные вместе с компанией не удалялись. Самый простой путь - создать новую группу определений "Всё", выгрузить пустышку и тут же загрузить её в нужную компанию, а потом уже саму компанию удавить.
В 4-ке данные уже удаляются в транзакции.
Старый 01.07.2010, 02:26   #15  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от AX2009
...
рабочем (не тестовом) приложении возникает необходимость удаления компании?
...
На моей практике не важно рабочая инсталляция или еще до запуска в промышленную эксплуатацию и до версии 5.0, где дублирование компании реализовали через стандартный экспорт-импорт, дублирование компании с последующим удалением было удобным для тестирования настроек. Т.е. что-то настроил, сдублировал, прогнал тест, напоролся на ошибку, удалил, настроил оригинал, сдублировал...

Эффективным это было только на ранних этапах промышленной эксплуатации и до нее, пока размер базы небольшой. Дублирование (до 5.0) работало очень быстро, не требовалось лазить в MS SQL для дублирования базы. По мере роста размера базы такой подход терял эффективность и стало быть целесообразность.

Раз или два путем дублирования и удаления оригинала компания переименовывалась.
__________________
С уважением,
glibs®
Старый 01.07.2010, 12:23   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Коллеги, поделитесь опытом, а что делать в Ax 2009? Только скрипты в СУБД?
Проблема описана тут.
__________________
Ivanhoe as is..
Теги
ошибка, удаление компании

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Самопроизвольная смена компании (DataAreaId) у табличной переменной gl00mie DAX: Программирование 14 10.04.2006 12:18
Виртуальные компании. Проблема. VadimVN DAX: Функционал 29 03.04.2006 16:23
Кредитование сотрудников компании Oxsana DAX: Функционал 13 02.09.2005 14:37
Перенос настроек из компании в компанию nicko DAX: Администрирование 5 26.04.2005 17:02
Реальный сетевой трафик Аксапты Seismic DAX: Прочие вопросы 12 21.11.2003 12:06

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

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

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