Дефрагментация всех индексов в БД

Tsql теория > Дефрагментация всех индексов в БД
27.03.2019 13:00:44


Наиболее часто встречающиеся слова в статье:

[VARCHAR] [metadata_TMP] [Tables_name] [DEFAULT] [MDM_Light] [DECLARE] [NOCOUNT] [ANSI_PADDING] [ANSI_WARNINGS] [Tables_count_records]


Статья:

  SET NOCOUNT ON;
         SET ANSI_PADDING ON;
         SET ANSI_WARNINGS ON;
		 use [MDM_Light]
         DECLARE @VAL VARCHAR(MAX);
         DECLARE @CURSOR CURSOR;
		                 CREATE TABLE #metadata_TMP
                 (TShema               VARCHAR(25), 
                  Tables_name          VARCHAR(255) DEFAULT NULL, 
                  Tables_count_records BIGINT DEFAULT 0, 
                  Tabl_new_records     BIGINT DEFAULT 0
                 );
                 -- получим список таблиц
                 INSERT INTO #metadata_TMP
                 (Tables_name, 
                  TShema
                 )
                        SELECT TABLE_NAME, 
                               TABLE_SCHEMA
                        FROM [MDM_Light].INFORMATION_SCHEMA.TABLES
                        WHERE TABLE_TYPE = 'BASE TABLE';
 
 
                   SET @CURSOR = CURSOR SCROLL
                 FOR SELECT  'DBCC DBREINDEX ('''+Tables_name+''' ,'' '',70)'
 
                     FROM #metadata_TMP;
 
 
                 OPEN @CURSOR;
                 FETCH NEXT FROM @CURSOR INTO @VAL;
                 WHILE @@FETCH_STATUS = 0
                     BEGIN
                         BEGIN TRY
                             EXEC (@VAL);
							 --print  @VAL
                         END TRY
                         BEGIN CATCH
                             PRINT 'ошибка перестроения индекса';
                             PRINT ERROR_MESSAGE();
                         END CATCH;
                         FETCH NEXT FROM @CURSOR INTO @VAL;
                     END;
                 CLOSE @CURSOR;