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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2010, 09:32   #1  
monter is offline
monter
Участник
 
14 / 10 (1) +
Регистрация: 10.10.2007
Косяк с системными таблицами SQL
Перестали апдейтиться записи на некоторых таблицах, т.е. таблицы перестали выбираться для обновления, и как следствие блокировка таблиц и зависание пользователей. Попытался решить проблему рестартом AOS-a, эффекта никакого. После рестарта служб SQL, автоматически запустилась процедура восстановления базы, после которой всё запустилось нормально.

В логах сервера ничего путного нет.

Помоготе найти причину, и какие проффилактические процедуры можно проводить с MS SQL, чтоб избежать подобные ситуации в будущемю

Сам грешу на системные таблицы SQL.

Axapta 3.0 sp 4 kr2
MS SQL 2000 sp3
__________________
While (!Life.EOF) {
You.Money++;
You.Girls.Add( new Girl( 90, 60, 90 ) );
BeHappy(); }
Старый 11.01.2010, 09:53   #2  
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
Как вариант можно пробовать перестроить индексы БД. Средствами Аксапты. Изредка они в БД разрушаются.
__________________
С уважением,
glibs®
Старый 11.01.2010, 10:22   #3  
monter is offline
monter
Участник
 
14 / 10 (1) +
Регистрация: 10.10.2007
Цитата:
Как вариант можно пробовать перестроить индексы БД. Средствами Аксапты. Изредка они в БД разрушаются.
А как это можно сделать??
__________________
While (!Life.EOF) {
You.Money++;
You.Girls.Add( new Girl( 90, 60, 90 ) );
BeHappy(); }
Старый 11.01.2010, 10:23   #4  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от monter Посмотреть сообщение
...MS SQL 2000 sp3
А почему sp4 не поставили? Там много чего исправлено было. И после sp4 чего-то было еще.
http://www.krell-software.com/mssql-...asp?version=80

Цитата:
Сообщение от monter Посмотреть сообщение
А как это можно сделать??
"Ну и вопросы у Вас! Сказала БД и повисла!"
Я когда-то пользовал такой скрипт -
X++:
set nocount on
DECLARE @tablename VARCHAR (128)
DECLARE @indexname VARCHAR (128)
declare INDEXES cursor for
 SELECT O.name,I.name 
   FROM sysobjects O,sysindexes I 
  WHERE I.indid>=0 AND I.indid<255 AND I.id=O.id AND type in ('U','V') AND (INDEXPROPERTY(I.id,I.name,'IsStatistics') <> 1) AND (INDEXPROPERTY(I.id,I.name,'IsAutoStatistics') <> 1) AND (INDEXPROPERTY(I.id,I.name,'IsHypothetical') <> 1) AND O.type!='S' 
    AND I.indid=1
ORDER BY 1, 2
OPEN INDEXES
FETCH NEXT FROM INDEXES INTO @tablename, @indexname
WHILE @@FETCH_STATUS = 0
BEGIN
 EXEC ('DBCC DBREINDEX (''' + @tablename + ''',''' + @indexname + ''',70) WITH NO_INFOMSGS')
 print @indexname
 FETCH NEXT FROM INDEXES INTO @tablename, @indexname
END
CLOSE INDEXES
DEALLOCATE INDEXES

Последний раз редактировалось egorych; 11.01.2010 в 10:28.
Старый 11.01.2010, 10:25   #5  
monter is offline
monter
Участник
 
14 / 10 (1) +
Регистрация: 10.10.2007
Цитата:
А почему sp4 не поставили? Там много чего исправлено было. И после sp4 чего-то было еще.
Описка по Фрейду, у нас SP4 и стоит
__________________
While (!Life.EOF) {
You.Money++;
You.Girls.Add( new Girl( 90, 60, 90 ) );
BeHappy(); }
Старый 11.01.2010, 10:44   #6  
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
Цитата:
Сообщение от monter
А как это можно сделать??
Администрирование\Периодические операции\SQL Администрирование

Индексы\Реиндексация

Реиндексация БД является регламентной процедурой на неразгильдяйских инсталляциях. Также регулярно необходимо запускать реиндексацию приложения, обновление статистик БД, очистку данных в таблицах различных журналов (там, где это можно и нужно), сжатие (shrink) БД. Реже но тоже нужно запускать глобальную компиляцию приложения. Опционально — перекрестные ссылки.

Вопрос о том откуда запускаются регламентные процедуры в вашем случае несколько смущает.
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: wojzeh (1).
Старый 11.01.2010, 11:04   #7  
monter is offline
monter
Участник
 
14 / 10 (1) +
Регистрация: 10.10.2007
Цитата:
Вопрос о том откуда запускаются регламентные процедуры в вашем случае несколько смущает.
Просто решил уточнить. Сие проишествие случилось 7, а 3 делал переиндексацию, глобальную компиляцию и синхронизацию.
__________________
While (!Life.EOF) {
You.Money++;
You.Girls.Add( new Girl( 90, 60, 90 ) );
BeHappy(); }
Старый 14.04.2010, 21:23   #8  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
672 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Реиндексация БД является регламентной процедурой на неразгильдяйских инсталляциях. Также регулярно необходимо запускать реиндексацию приложения, обновление статистик БД, очистку данных в таблицах различных журналов (там, где это можно и нужно), сжатие (shrink) БД. Реже но тоже нужно запускать глобальную компиляцию приложения. Опционально — перекрестные ссылки.
а можно для образца пример подобного расписания?
__________________
Felix nihil admirari
Старый 15.04.2010, 07:09   #9  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
На сколько мне известно, после перестройки индексов ещё рекомендуют выполнять обновление статистики...

Например вот так:
X++:
  DECLARE @TableName varchar(30) 
  DECLARE myCur CURSOR FOR
Select
    RTRIM(CONVERT(varchar(30),TABLE_NAME))
from
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_TYPE='BASE TABLE'
    AND TABLE_NAME<>'dtproperties'
  OPEN myCur
  FETCH NEXT FROM myCur INTO @TableName 
  WHILE @@FETCH_STATUS=0 
    BEGIN 
    BEGIN TRANSACTION t1
       EXECUTE('UPDATE STATISTICS '+@TableName );
    COMMIT TRANSACTION t1
    FETCH NEXT FROM myCur INTO @TableName 
  END 
  CLOSE myCur
  DEALLOCATE myCur
Рекомендую делать эти операции систематически... например ночью в воскресенье, чтобы не грузить систему, потому как реиндексация достаточно тяжелая операция!...
__________________
Что сломалось не знаем, но уже немного подчинили...
Старый 15.04.2010, 11:16   #10  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
рекомендуют выполнять обновление статистики...
Например вот так:
а чем это лучше, чем
sp_updatestats
За это сообщение автора поблагодарили: hated8 (1).
Старый 15.04.2010, 11:30   #11  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
Ну, лучше или хуже не скажу, но работают по разному:

sp_updatestats - обновляет всю устаревшую статистику
UPDATE STATISTICS - обновляет статистику вне зависимости от возраста...

А вот в sql 2000 - работают одинаково...

Цитата:
Инструкция UPDATE STATISTICS WITH RESAMPLE обновляет всю статистику по таблице в соответствии с текущим показателем выборки. Это значит, что для обновления статистик, привязанных к индексам, созданных полным просмотром при построении индекса, требуется сканирование всей таблицы. Это может быть очень длительной операцией, особенно в случаях, когда в ней участвуют большие секционированные таблицы с множеством индексов. Обновление каждой статистики требует считывания больших объемов данных. Чтобы избежать этой проблемы, рассмотрите возможность использования процедуры sp_updatestats (Transact-SQL). Таким образом, статистики будут обновляться только по мере необходимости.
подробнее здесь:
http://technet.microsoft.com/ru-ru/l...SQL.90%29.aspx
http://technet.microsoft.com/ru-ru/l...SQL.90%29.aspx
__________________
Что сломалось не знаем, но уже немного подчинили...

Последний раз редактировалось hated8; 15.04.2010 в 11:51.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
update_recordset не работает с системными полями и таблицами? Alexx7 DAX: Программирование 42 19.10.2009 09:39
Dynamics AX: Dynamics AX 2009 & SQL Server 2008 Blog bot DAX Blogs 0 10.06.2008 21:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01
Караул! SQL сервак не хочет оперировать с большими таблицами... Hamster DAX: Администрирование 4 28.01.2005 21:10

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:59.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.