{"id":292831,"date":"2019-07-31T15:00:46","date_gmt":"2019-07-31T15:00:46","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=292831"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=292831","title":{"rendered":"\u041e\u0431\u0437\u043e\u0440 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 SQLIndexManager"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u0433\u0440\u0430\u044e\u0442 \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c \u0432 \u0421\u0423\u0411\u0414, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043a \u043d\u0443\u0436\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e \u0438\u0445 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c. \u041e\u0431 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043e\u0431\u0437\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0432 <a href=\"https:\/\/towardsdatascience.com\/sql-server-index-analysis-and-optimization-1edd84d9da\">\u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u043d\u044b\u0445, \u0442\u0430\u043a \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 <a href=\"https:\/\/github.com\/Microsoft\/tigertoolbox\/tree\/master\/AdaptiveIndexDefrag\">\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a>, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <a href=\"https:\/\/github.com\/sergeysyrovatchenko\/SQLIndexManager\">SQLIndexManager<\/a>, \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/habr.com\/ru\/users\/alandenton\/\" class=\"user_link\">AlanDenton<\/a>.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 SQLIndexManager \u0438 \u0440\u044f\u0434\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u0440 <a href=\"https:\/\/habr.com\/ru\/post\/459914\/\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 <a href=\"https:\/\/www.codeproject.com\/Articles\/5162340\/SQL-Index-Manager-Free-GUI-Tool-for-Index-Maintena\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <a href=\"https:\/\/www.sql.ru\/forum\/1312218-1\/sql-index-manager-besplatnaya-utilita-po-obsluzhivaniu-indeksov-dlya-sql-server-i-azure\">\u0437\u0434\u0435\u0441\u044c<\/a>.<br \/>  \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u0438 \u0431\u0430\u0433\u043e\u0432 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043a \u0441\u0430\u043c\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 SQLIndexManager.<\/p>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C# .NET Framework 4.5 \u0432 Visual Studio 2017 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 DevExpress \u0434\u043b\u044f \u0444\u043e\u0440\u043c:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/i0\/wo\/do\/i0wodozvszemgmmash24snfzrgk.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/i0\/wo\/do\/i0wodozvszemgmmash24snfzrgk.jpeg\"><\/a><\/p>\n<p>  \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/xc\/mf\/ac\/xcmfacmb7wxiz5pfvg5m2ybyet4.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xc\/mf\/ac\/xcmfacmb7wxiz5pfvg5m2ybyet4.jpeg\"><\/a><\/p>\n<p>  \u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445:<\/p>\n<ol>\n<li>Index<\/li>\n<li>Query<\/li>\n<li>QueryEngine<\/li>\n<li>ServerInfo<\/li>\n<\/ol>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/ya\/ox\/fo\/yaoxfojk1yhfujv5nhu8wxfjx64.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ya\/ox\/fo\/yaoxfojk1yhfujv5nhu8wxfjx64.jpeg\"><\/a><\/p>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0421\u0423\u0411\u0414, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"1c\">ApplicationName=\u201dSQLIndexManager\u201d<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:<br \/>  <a href=\"https:\/\/habrastorage.org\/webt\/77\/kw\/uh\/77kwuhjmxnartbvfvmpnk8fpi7k.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/77\/kw\/uh\/77kwuhjmxnartbvfvmpnk8fpi7k.jpeg\"><\/a><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 MS SQL Server, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0435\u0442\u044f\u043c.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/id\/l0\/w_\/idl0w_a4afakmyqmegzbrbomksc.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/id\/l0\/w_\/idl0w_a4afakmyqmegzbrbomksc.jpeg\"><\/a><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u0421\u0423\u0411\u0414:<\/p>\n<ol>\n<li>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0421\u0423\u0411\u0414<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">SELECT ProductLevel  = SERVERPROPERTY('ProductLevel')      , Edition       = SERVERPROPERTY('Edition')      , ServerVersion = SERVERPROPERTY('ProductVersion')      , IsSysAdmin    = CAST(IS_SRVROLEMEMBER('sysadmin') AS BIT) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0445 \u043a\u0440\u0430\u0442\u043a\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">SELECT DatabaseName = t.[name]      , d.DataSize      , DataUsedSize  = CAST(NULL AS BIGINT)      , d.LogSize      , LogUsedSize   = CAST(NULL AS BIGINT)      , RecoveryModel = t.recovery_model_desc      , LogReuseWait  = t.log_reuse_wait_desc FROM sys.databases t WITH(NOLOCK) LEFT JOIN (     SELECT [database_id]          , DataSize = SUM(CASE WHEN [type] = 0 THEN CAST(size AS BIGINT) END)          , LogSize  = SUM(CASE WHEN [type] = 1 THEN CAST(size AS BIGINT) END)     FROM sys.master_files WITH(NOLOCK)     GROUP BY [database_id] ) d ON d.[database_id] = t.[database_id] WHERE t.[state] = 0     AND t.[database_id] != 2     AND ISNULL(HAS_DBACCESS(t.[name]), 1) = 1 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<\/li>\n<\/ol>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 MS SQL Server:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/bc\/fy\/gz\/bcfygzsztslx32ll82uxflshfhi.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bc\/fy\/gz\/bcfygzsztslx32ll82uxflshfhi.jpeg\"><\/a><\/p>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u0440\u0430\u0432. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/security\/authentication-access\/server-level-roles?view=sql-server-2017\">sysadmin<\/a>, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f <a href=\"https:\/\/docs.microsoft.com\/ru-ru\/sql\/relational-databases\/system-catalog-views\/sys-master-files-transact-sql?view=sql-server-2017\">sys.master_files<\/a>. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u0430\u0432 \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u201c\u041e\u041a\u201d.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410\u043d\u0430\u043b\u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">declare @Fragmentation float=15; declare @MinIndexSize bigint=768; declare @MaxIndexSize bigint=1048576; declare @PreDescribeSize bigint=32768;  SET NOCOUNT ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF  IF OBJECT_ID('tempdb.dbo.#AllocationUnits') IS NOT NULL     DROP TABLE #AllocationUnits  CREATE TABLE #AllocationUnits (       ContainerID   BIGINT PRIMARY KEY     , ReservedPages BIGINT NOT NULL     , UsedPages     BIGINT NOT NULL )  INSERT INTO #AllocationUnits (ContainerID, ReservedPages, UsedPages) SELECT [container_id]      , SUM([total_pages])      , SUM([used_pages]) FROM sys.allocation_units WITH(NOLOCK) GROUP BY [container_id] HAVING SUM([total_pages]) BETWEEN @MinIndexSize AND @MaxIndexSize  IF OBJECT_ID('tempdb.dbo.#ExcludeList') IS NOT NULL     DROP TABLE #ExcludeList  CREATE TABLE #ExcludeList (ID INT PRIMARY KEY)  INSERT INTO #ExcludeList SELECT [object_id] FROM sys.objects WITH(NOLOCK) WHERE [type] IN ('V', 'U')     AND ( [is_ms_shipped] = 1 )  IF OBJECT_ID('tempdb.dbo.#Partitions') IS NOT NULL     DROP TABLE #Partitions  SELECT [object_id]      , [index_id]      , [partition_id]      , [partition_number]      , [rows]      , [data_compression] INTO #Partitions FROM sys.partitions WITH(NOLOCK) WHERE [object_id] &gt; 255     AND [rows] &gt; 0     AND [object_id] NOT IN (SELECT * FROM #ExcludeList)  IF OBJECT_ID('tempdb.dbo.#Indexes') IS NOT NULL     DROP TABLE #Indexes  CREATE TABLE #Indexes (       ObjectID         INT NOT NULL     , IndexID          INT NOT NULL     , IndexName        SYSNAME NULL     , PagesCount       BIGINT NOT NULL     , UnusedPagesCount BIGINT NOT NULL     , PartitionNumber  INT NOT NULL     , RowsCount        BIGINT NOT NULL     , IndexType        TINYINT NOT NULL     , IsAllowPageLocks BIT NOT NULL     , DataSpaceID      INT NOT NULL     , DataCompression  TINYINT NOT NULL     , IsUnique         BIT NOT NULL     , IsPK             BIT NOT NULL     , FillFactorValue  INT NOT NULL     , IsFiltered       BIT NOT NULL     , PRIMARY KEY (ObjectID, IndexID, PartitionNumber) )  INSERT INTO #Indexes SELECT ObjectID         = i.[object_id]      , IndexID          = i.index_id      , IndexName        = i.[name]      , PagesCount       = a.ReservedPages      , UnusedPagesCount = CASE WHEN ABS(a.ReservedPages - a.UsedPages) &gt; 32 THEN a.ReservedPages - a.UsedPages ELSE 0 END      , PartitionNumber  = p.[partition_number]      , RowsCount        = ISNULL(p.[rows], 0)      , IndexType        = i.[type]      , IsAllowPageLocks = i.[allow_page_locks]      , DataSpaceID      = i.[data_space_id]      , DataCompression  = p.[data_compression]      , IsUnique         = i.[is_unique]      , IsPK             = i.[is_primary_key]      , FillFactorValue  = i.[fill_factor]      , IsFiltered       = i.[has_filter] FROM #AllocationUnits a JOIN #Partitions p ON a.ContainerID = p.[partition_id] JOIN sys.indexes i WITH(NOLOCK) ON i.[object_id] = p.[object_id] AND p.[index_id] = i.[index_id]  WHERE i.[type] IN (0, 1, 2, 5, 6)     AND i.[object_id] &gt; 255  DECLARE @files TABLE (ID INT PRIMARY KEY) INSERT INTO @files SELECT DISTINCT [data_space_id] FROM sys.database_files WITH(NOLOCK) WHERE [state] != 0     AND [type] = 0  IF @@ROWCOUNT &gt; 0 BEGIN      DELETE FROM i     FROM #Indexes i     LEFT JOIN sys.destination_data_spaces dds WITH(NOLOCK) ON i.DataSpaceID = dds.[partition_scheme_id] AND i.PartitionNumber = dds.[destination_id]     WHERE ISNULL(dds.[data_space_id], i.DataSpaceID) IN (SELECT * FROM @files)  END   DECLARE @DBID   INT       , @DBNAME SYSNAME  SET @DBNAME = DB_NAME() SELECT @DBID = [database_id] FROM sys.databases WITH(NOLOCK) WHERE [name] = @DBNAME  IF OBJECT_ID('tempdb.dbo.#Fragmentation') IS NOT NULL     DROP TABLE #Fragmentation  CREATE TABLE #Fragmentation (       ObjectID         INT NOT NULL     , IndexID          INT NOT NULL     , PartitionNumber  INT NOT NULL     , Fragmentation    FLOAT NOT NULL     , PRIMARY KEY (ObjectID, IndexID, PartitionNumber) )  INSERT INTO #Fragmentation (ObjectID, IndexID, PartitionNumber, Fragmentation) SELECT i.ObjectID      , i.IndexID      , i.PartitionNumber      , r.[avg_fragmentation_in_percent] FROM #Indexes i CROSS APPLY sys.dm_db_index_physical_stats(@DBID, i.ObjectID, i.IndexID, i.PartitionNumber, 'LIMITED') r WHERE i.PagesCount &lt;= @PreDescribeSize     AND r.[index_level] = 0     AND r.[alloc_unit_type_desc] = 'IN_ROW_DATA'     AND i.IndexType IN (0, 1, 2)  IF OBJECT_ID('tempdb.dbo.#Columns') IS NOT NULL     DROP TABLE #Columns  CREATE TABLE #Columns (       ObjectID     INT NOT NULL     , ColumnID     INT NOT NULL     , ColumnName   SYSNAME NULL     , SystemTypeID TINYINT NULL     , IsSparse     BIT     , IsColumnSet  BIT     , MaxLen       INT     , PRIMARY KEY (ObjectID, ColumnID) )  INSERT INTO #Columns SELECT ObjectID     = [object_id]      , ColumnID     = [column_id]      , ColumnName   = [name]      , SystemTypeID = [system_type_id]      , IsSparse     = [is_sparse]      , IsColumnSet  = [is_column_set]      , MaxLen       = [max_length] FROM sys.columns WITH(NOLOCK) WHERE [object_id] IN (SELECT DISTINCT i.ObjectID FROM #Indexes i)  IF OBJECT_ID('tempdb.dbo.#IndexColumns') IS NOT NULL     DROP TABLE #IndexColumns  CREATE TABLE #IndexColumns (       ObjectID   INT NOT NULL     , IndexID    INT NOT NULL     , OrderID    INT NOT NULL     , ColumnID   INT NOT NULL     , IsIncluded BIT NOT NULL     , PRIMARY KEY (ObjectID, IndexID, ColumnID) )  INSERT INTO #IndexColumns SELECT ObjectID   = [object_id]      , IndexID    = [index_id]      , OrderID    = CASE WHEN [is_included_column] = 0 THEN [key_ordinal] ELSE [index_column_id] END      , ColumnID   = [column_id]      , IsIncluded = ISNULL([is_included_column], 0) FROM sys.index_columns ic WITH(NOLOCK) WHERE EXISTS(         SELECT *         FROM #Indexes i         WHERE i.ObjectID = ic.[object_id]             AND i.IndexID = ic.[index_id]             AND i.IndexType IN (1, 2)     )  IF OBJECT_ID('tempdb.dbo.#Lob') IS NOT NULL     DROP TABLE #Lob  CREATE TABLE #Lob (       ObjectID    INT NOT NULL     , IndexID     INT NOT NULL     , IsLobLegacy BIT     , IsLob       BIT     , PRIMARY KEY (ObjectID, IndexID) )  INSERT INTO #Lob (ObjectID, IndexID, IsLobLegacy, IsLob) SELECT c.ObjectID      , IndexID     = ISNULL(i.IndexID, 1)      , IsLobLegacy = MAX(CASE WHEN c.SystemTypeID IN (34, 35, 99) THEN 1 END)      , IsLob       = 0 FROM #Columns c LEFT JOIN #IndexColumns i ON c.ObjectID = i.ObjectID AND c.ColumnID = i.ColumnID WHERE c.SystemTypeID IN (34, 35, 99) GROUP BY c.ObjectID        , i.IndexID  IF OBJECT_ID('tempdb.dbo.#Sparse') IS NOT NULL     DROP TABLE #Sparse  CREATE TABLE #Sparse (ObjectID INT PRIMARY KEY) INSERT INTO #Sparse SELECT DISTINCT ObjectID FROM #Columns WHERE IsSparse = 1     OR IsColumnSet = 1  IF OBJECT_ID('tempdb.dbo.#AggColumns') IS NOT NULL     DROP TABLE #AggColumns  CREATE TABLE #AggColumns (       ObjectID        INT NOT NULL     , IndexID         INT NOT NULL     , IndexColumns    NVARCHAR(MAX)     , IncludedColumns NVARCHAR(MAX)     , PRIMARY KEY (ObjectID, IndexID) )  INSERT INTO #AggColumns SELECT t.ObjectID      , t.IndexID      , IndexColumns = STUFF((             SELECT ', [' + c.ColumnName + ']'             FROM #IndexColumns i             JOIN #Columns c ON i.ObjectID = c.ObjectID AND i.ColumnID = c.ColumnID             WHERE i.ObjectID = t.ObjectID                 AND i.IndexID = t.IndexID                 AND i.IsIncluded = 0             ORDER BY i.OrderID         FOR XML PATH(''), TYPE).value('(.\/text())[1]', 'NVARCHAR(MAX)'), 1, 2, '')      , IncludedColumns = STUFF((             SELECT ', [' + c.ColumnName + ']'             FROM #IndexColumns i             JOIN #Columns c ON i.ObjectID = c.ObjectID AND i.ColumnID = c.ColumnID             WHERE i.ObjectID = t.ObjectID                 AND i.IndexID = t.IndexID                 AND i.IsIncluded = 1             ORDER BY i.OrderID         FOR XML PATH(''), TYPE).value('(.\/text())[1]', 'NVARCHAR(MAX)'), 1, 2, '') FROM (     SELECT DISTINCT ObjectID, IndexID     FROM #Indexes     WHERE IndexType IN (1, 2) ) t  SELECT i.ObjectID      , i.IndexID      , i.IndexName      , ObjectName       = o.[name]      , SchemaName       = s.[name]      , i.PagesCount      , i.UnusedPagesCount      , i.PartitionNumber      , i.RowsCount      , i.IndexType      , i.IsAllowPageLocks      , u.TotalWrites      , u.TotalReads      , u.TotalSeeks      , u.TotalScans      , u.TotalLookups      , u.LastUsage      , i.DataCompression      , f.Fragmentation      , IndexStats       = STATS_DATE(i.ObjectID, i.IndexID)      , IsLobLegacy      = ISNULL(lob.IsLobLegacy, 0)      , IsLob            = ISNULL(lob.IsLob, 0)      , IsSparse         = CAST(CASE WHEN p.ObjectID IS NULL THEN 0 ELSE 1 END AS BIT)      , IsPartitioned    = CAST(CASE WHEN dds.[data_space_id] IS NOT NULL THEN 1 ELSE 0 END AS BIT)      , FileGroupName    = fg.[name]      , i.IsUnique      , i.IsPK      , i.FillFactorValue      , i.IsFiltered      , a.IndexColumns      , a.IncludedColumns FROM #Indexes i JOIN sys.objects o WITH(NOLOCK) ON o.[object_id] = i.ObjectID JOIN sys.schemas s WITH(NOLOCK) ON s.[schema_id] = o.[schema_id] LEFT JOIN #AggColumns a ON a.ObjectID = i.ObjectID AND a.IndexID = i.IndexID LEFT JOIN #Sparse p ON p.ObjectID = i.ObjectID LEFT JOIN #Fragmentation f ON f.ObjectID = i.ObjectID AND f.IndexID = i.IndexID AND f.PartitionNumber = i.PartitionNumber LEFT JOIN (     SELECT ObjectID      = [object_id]          , IndexID       = [index_id]          , TotalWrites   = NULLIF([user_updates], 0)          , TotalReads    = NULLIF([user_seeks] + [user_scans] + [user_lookups], 0)          , TotalSeeks    = NULLIF([user_seeks], 0)          , TotalScans    = NULLIF([user_scans], 0)          , TotalLookups  = NULLIF([user_lookups], 0)          , LastUsage     = (                                 SELECT MAX(dt)                                 FROM (                                     VALUES ([last_user_seek])                                          , ([last_user_scan])                                          , ([last_user_lookup])                                          , ([last_user_update])                                 ) t(dt)                            )     FROM sys.dm_db_index_usage_stats WITH(NOLOCK)     WHERE [database_id] = @DBID ) u ON i.ObjectID = u.ObjectID AND i.IndexID = u.IndexID LEFT JOIN #Lob lob ON lob.ObjectID = i.ObjectID AND lob.IndexID = i.IndexID LEFT JOIN sys.destination_data_spaces dds WITH(NOLOCK) ON i.DataSpaceID = dds.[partition_scheme_id] AND i.PartitionNumber = dds.[destination_id] JOIN sys.filegroups fg WITH(NOLOCK) ON ISNULL(dds.[data_space_id], i.DataSpaceID) = fg.[data_space_id]  WHERE o.[type] IN ('V', 'U')     AND (             f.Fragmentation &gt;= @Fragmentation         OR             i.PagesCount &gt; @PreDescribeSize         OR             i.IndexType IN (5, 6)     ) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0439, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0445\u0435\u043c\u044b, \u043f\u043b\u0430\u043d \u043c\u043e\u0433 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442 \u043a \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0441 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/yd\/rl\/oh\/ydrlohqwbtggc8n8equratfkkr0.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yd\/rl\/oh\/ydrlohqwbtggc8n8equratfkkr0.jpeg\"><\/a><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a:<\/p>\n<ol>\n<li>\u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0446\u0438\u0439<\/li>\n<li>\u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f<\/li>\n<li>\u0441\u0436\u0430\u0442\u0438\u0435<\/li>\n<li>\u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430<\/li>\n<\/ol>\n<p>  \u0438 \u0442. \u0434.<br \/>  \u0421\u0430\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/7z\/qw\/jf\/7zqwjfox2zagl5ox0oji648jnta.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7z\/qw\/jf\/7zqwjfox2zagl5ox0oji648jnta.jpeg\"><\/a><\/p>\n<p>  \u0412 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 Fix \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/yp\/c9\/o2\/ypc9o2ooiylu7n0pw7zbdo97tbi.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yp\/c9\/o2\/ypc9o2ooiylu7n0pw7zbdo97tbi.jpeg\"><\/a><\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 (\u044d\u0442\u0430 \u0436\u0435 \u043a\u043d\u043e\u043f\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432):<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/tt\/tu\/fn\/tttufnve3kmo_siz_d0ahcxfew8.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tt\/tu\/fn\/tttufnve3kmo_siz_d0ahcxfew8.jpeg\"><\/a><\/p>\n<p>  \u0442\u0430\u043a \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b (\u044d\u0442\u0430 \u0436\u0435 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432):<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/tt\/8w\/gv\/tt8wgvpzqx1cl0a1qvkdfxf1ffm.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tt\/8w\/gv\/tt8wgvpzqx1cl0a1qvkdfxf1ffm.jpeg\"><\/a><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0441\u043b\u0435\u0432\u0430 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0440\u044f\u0434\u043e\u043c \u0441 \u043b\u0443\u043f\u043e\u0439.<\/p>\n<p>  \u041a\u043d\u043e\u043f\u043a\u0430 \u0441 \u043b\u0443\u043f\u043e\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u201c?\u201d \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/e5\/p_\/mq\/e5p_mqbcsumjihbb3qnwurxyqdk.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/e5\/p_\/mq\/e5p_mqbcsumjihbb3qnwurxyqdk.jpeg\"><\/a><\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/bm\/1c\/nn\/bm1cnnxagvohdo3a4qtprhvpqbe.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bm\/1c\/nn\/bm1cnnxagvohdo3a4qtprhvpqbe.jpeg\"><\/a><\/p>\n<p>  \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/qn\/xa\/en\/qnxaenzm91ifrvoc2l0aipezq5o.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qn\/xa\/en\/qnxaenzm91ifrvoc2l0aipezq5o.jpeg\"><\/a><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432\u043d\u0438\u0437\u0443 \u043e\u043a\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u043e\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/wc\/aq\/zs\/wcaqzsz72m6dbuwe3bv1fxqm_3k.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wc\/aq\/zs\/wcaqzsz72m6dbuwe3bv1fxqm_3k.jpeg\"><\/a><\/p>\n<p>  \u0412 \u043e\u043a\u043d\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u043d\u043a\u0438\u0435 \u043e\u043f\u0446\u0438\u0438:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/kc\/6x\/gp\/kc6xgpndlhe19ueeehpobprsomc.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kc\/6x\/gp\/kc6xgpndlhe19ueeehpobprsomc.jpeg\"><\/a><\/p>\n<p>  <b>\u041f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e:<\/b><\/p>\n<ol>\n<li>\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 (\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e)<\/li>\n<li>\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0411\u0414, \u043d\u043e \u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 MS SQL Server)<\/li>\n<li>\u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b PowerShell, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c:<\/li>\n<li><a href=\"https:\/\/dbatools.io\/commands\/\">dbatools.io\/commands<\/a><\/li>\n<li>\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 MS SQL Server \u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u0438\u0437 \u043f.2 \u0438 4 \u0432\u044b\u0442\u0435\u043a\u0430\u0435\u0442 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e \u0431\u0430\u0437\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c MS SQL Server, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435<\/li>\n<li>\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 (\u043f\u043e\u043b\u043d\u044b\u0445 \u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043d\u0435\u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u043b\u0438\u0431\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c)<\/li>\n<li>\u0442 \u043a SQLIndexManager \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0421\u0423\u0411\u0414 MS SQL Server, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: SQLIndexManager for MS SQL Server<\/li>\n<li>\u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 GUI \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 .NET Core 2.1<\/li>\n<\/ol>\n<p>  \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043f.6 \u0438\u0437 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u044b\u0445 \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432:<\/p>\n<p>  <a href=\"https:\/\/habrastorage.org\/webt\/zk\/bw\/d3\/zkbwd3hem7xtdtj_5yuqhctasac.jpeg\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zk\/bw\/d3\/zkbwd3hem7xtdtj_5yuqhctasac.jpeg\"><\/a><\/p>\n<h3>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Microsoft\/tigertoolbox\/tree\/master\/AdaptiveIndexDefrag\">\u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/sergeysyrovatchenko\/SQLIndexManager\">\u0443\u0442\u0438\u043b\u0438\u0442\u0430 SQLIndexManager<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/post\/459914\/\">\u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442\u044b SQLIndexManager<\/a><\/li>\n<li><a href=\"https:\/\/www.sql.ru\/forum\/1312218-1\/sql-index-manager-besplatnaya-utilita-po-obsluzhivaniu-indeksov-dlya-sql-server-i-azure\">\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0435 SQLIndexManager<\/a><\/li>\n<li><a href=\"https:\/\/www.codeproject.com\/Articles\/5162340\/SQL-Index-Manager-Free-GUI-Tool-for-Index-Maintena\">SQL Index Manager \u2013 Free GUI Tool for Index Maintenance on SQL Server and Azure<\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/sql-server-index-analysis-and-optimization-1edd84d9da\">SQL Server Index Analysis and Optimization<\/a><\/li>\n<\/ul>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/461277\/\"> https:\/\/habr.com\/ru\/post\/461277\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u0433\u0440\u0430\u044e\u0442 \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c \u0432 \u0421\u0423\u0411\u0414, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043a \u043d\u0443\u0436\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e \u0438\u0445 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c. \u041e\u0431 \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u0435\u043b\u0430\u043b\u0441\u044f \u043e\u0431\u0437\u043e\u0440 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0432 <a href=\"https:\/\/towardsdatascience.com\/sql-server-index-analysis-and-optimization-1edd84d9da\">\u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043a \u043f\u043b\u0430\u0442\u043d\u044b\u0445, \u0442\u0430\u043a \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0435 <a href=\"https:\/\/github.com\/Microsoft\/tigertoolbox\/tree\/master\/AdaptiveIndexDefrag\">\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a>, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <a href=\"https:\/\/github.com\/sergeysyrovatchenko\/SQLIndexManager\">SQLIndexManager<\/a>, \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/habr.com\/ru\/users\/alandenton\/\" class=\"user_link\">AlanDenton<\/a>.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-292831","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=292831"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292831\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}