07.06.2013, 14:17 | #1 |
Участник
|
axutil.exe optimize. Что именно делает эта команда?
ax2012
Что именно делает команда "axutil.exe optimize"? В хелпе сказано: Цитата:
optimize - Optimize the model store for runtime performance.
Цитата:
AXUtil 6.2 - Microsoft Dynamics AX Admin Utility (6.2.158.0)
(c) Copyright, Microsoft Corporation, 2011. All rights reserved. The AXUtil command was started in the mode: optimize. Working against model store AX2012R2A/MicrosoftDynamicsAX_model. Reorganizing Model Store. You can continue with other tasks. =============== понятно, что можно оттрасировать и промониторить... но может кто уже разбирался? стоит ли ее использовать в виртуальной машине? с учетом, что в виртуалке установлен CU? Как ускорить работу виртуальной машины ax2012r2 |
|
07.06.2013, 14:29 | #2 |
Axapta
|
Я как-то смотрел поверхностно и, насколько я помню, делаются как минимум shrinkdatabase и реиндексация.
|
|
07.06.2013, 14:39 | #3 |
Участник
|
|
|
07.06.2013, 14:50 | #4 |
Axapta
|
Не знаю, смотрел совсем поверхностно. Так что я тоже хочу узнать ответ на твой вопрос.
Но мне кажется вряд ли там какое-то шаманство есть, раз команда итак всегда по умочанию выполняется при установке новой модели. Upd. А для Ax2012 (без R2) официальная рекомендация - не использовать эту оптимизацию, а просто настроить план обслуживания. Последний раз редактировалось oip; 07.06.2013 в 14:57. Причина: Update |
|
|
За это сообщение автора поблагодарили: mazzy (2), Logger (1). |
04.07.2018, 17:15 | #5 |
Участник
|
Оставлю чтобы было.
Запускает 2 метода (текст ниже). 1-й с параметром RebuildIndexAll. т.е. в базе модели запускаются хранимки "exec [dbo].XU_Reindex" "exec [dbo].XU_Shrink" "exec [dbo].[XU_ResetHandleIdentity]" X++: // Microsoft.Dynamics.AX.Framework.Tools.ModelManagement.ModelStore internal static void Optimize(SqlConnection connection, AxUtilContext context, OptimizeOption option) { using (SqlCommand sqlCommand = ModelStore.CreateCommand(connection)) { switch (option) { case OptimizeOption.DisableIndex: try { sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "[dbo].XU_DisableEnableNonClusteredIndexes", new object[0]); sqlCommand.Parameters.Add(new SqlParameter("@dbName", connection.Database)); sqlCommand.Parameters.Add(new SqlParameter("@changeRecoveryModel", 'N')); sqlCommand.Parameters.Add(new SqlParameter("@mode", '1')); sqlCommand.ExecuteNonQuery(); goto IL_246; } catch (SqlException ex) { context.ReportWarning(ex.Message); context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.DisableIndexFailure, new object[0])); goto IL_246; } break; case OptimizeOption.RebuildIndex: break; case OptimizeOption.RebuildIndexAll: goto IL_184; default: goto IL_184; } try { sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "[dbo].XU_DisableEnableNonClusteredIndexes", new object[0]); sqlCommand.Parameters.Add(new SqlParameter("@dbName", connection.Database)); sqlCommand.Parameters.Add(new SqlParameter("@changeRecoveryModel", 'Y')); sqlCommand.Parameters.Add(new SqlParameter("@mode", '2')); sqlCommand.ExecuteNonQuery(); goto IL_246; } catch (SqlException ex2) { context.ReportWarning(ex2.Message); context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.EnableIndexFailure, new object[0])); goto IL_246; } IL_184: context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.Reorganizing, new object[0])); try { sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "exec [dbo].XU_Reindex", new object[0]); sqlCommand.ExecuteNonQuery(); } catch (SqlException ex3) { context.ReportWarning(ex3.Message); context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.ReindexFailure, new object[0])); } if (connection.State == ConnectionState.Open) { try { sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "exec [dbo].XU_Shrink", new object[0]); sqlCommand.ExecuteNonQuery(); } catch (SqlException ex4) { context.ReportWarning(ex4.Message); context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.ShrinkFailed, new object[0])); } } IL_246:; } } X++: // Microsoft.Dynamics.AX.Framework.Tools.ModelManagement.ModelStore internal static void ResetHandleIdentity(SqlConnection connection) { using (SqlCommand sqlCommand = ModelStore.CreateCommand(connection)) { sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandText = "[dbo].[XU_ResetHandleIdentity]"; sqlCommand.ExecuteNonQuery(); } } Последний раз редактировалось Logger; 04.07.2018 в 17:18. |
|
|
За это сообщение автора поблагодарили: gl00mie (5), vmoskalenko (1), AlGol (3). |
Теги |
ax2012, axutil, optimize, производительность |
|
|