Использование командной строки flyway для индексов версий - PullRequest
0 голосов
/ 04 июля 2019

Вот мой сценарий, я администратор базы данных и получил задание по созданию репозитория битбакета с CI для управления всеми процедурами и функциями в SQL Server.Этот первый шаг был успешно выполнен с помощью flyway 5.2.4 с повторяющимися сценариями Repeatable.

Теперь я пытаюсь расширить проект, чтобы контролировать только индексы.

Некоторые проекты реализуют миграцию или другие миграциирешения и некоторые не реализуют.Так что я хотел бы контролировать индексы в этом же проекте.

У меня такой вопрос, возможно, документация прохождения не ясна, я также пытаюсь использовать сценарии NTV__, но не работает.

Кто-нибудь пробовал это раньше?Я спрашиваю о чем-то невозможном?

conf file

flyway.url=jdbc:sqlserver://select:1433;databaseName=database
flyway.user=sa
flyway.password=pass
flyway.locations=filesystem:/home/krismorte/repo/DOCKER/flyway-teste/
flyway.sqlMigrationSuffixes=.sql
flyway.table=flyway_my_sql_objects
flyway.baselineOnMigrate=true
flyway.allowMixedMigrations = true

повторяемый файл

CREATE OR ALTER PROCEDURE [DBA].[USP_UPDATESTATISTICS] @RUN INT = 0
--  WITH ENCRYPTION
AS
BEGIN

SET NOCOUNT ON;

DECLARE 
    @TOP                INT = 200,              -- QUANTOS INDEXES SERÃO EFETUADOS O REBUILD POR VEZ
    @WINDOW_LIMIT       DATETIME = '06:00:00',  -- VALOR DO HORÁRIO LIMITE DA JANELA EX: '13:32:00'
    @STR_UPDATESTATS    NVARCHAR(MAX) = '',
    @ID                 INT,
    @TIME               DATETIME

SELECT TOP (@TOP)
     ID = IDENTITY(INT, 1, 1)
    ,DATABASENAME = DB_NAME()
    ,TABLENAME = O.NAME
INTO #STATISTICSTOUPDATE
FROM SYS.OBJECTS O
WHERE OBJECTPROPERTY(O.[OBJECT_ID], 'ISMSSHIPPED') = 0
    AND O.TYPE_DESC = 'USER_TABLE'
ORDER BY [TABLENAME]  DESC

WHILE EXISTS(SELECT TOP 1 1 FROM #STATISTICSTOUPDATE)
BEGIN   
    SELECT TOP 1 
        @ID = ID,
        @TIME = CONVERT(VARCHAR(8),DATEADD(HOUR, -3, GETDATE()),108) ,
        @STR_UPDATESTATS = '
        SET ANSI_PADDING ON;
        UPDATE STATISTICS [' + I.TABLENAME + '] WITH FULLSCAN;
        SET ANSI_PADDING OFF;' 
    FROM #STATISTICSTOUPDATE I;     

    IF (@WINDOW_LIMIT IS NULL OR @TIME < @WINDOW_LIMIT)
    BEGIN
        BEGIN TRY
            PRINT 'EXECUTANDO: ' + @STR_UPDATESTATS + CHAR(13) + CHAR(10);  

            IF @RUN = 1
             EXEC (@STR_UPDATESTATS);   

            INSERT INTO [DBA].[LOGUPDATESTATISTICS] ([DATA], [DATABASE], [TABLE_NAME], [SCRIPT_REBUILD], [STATUS]) 
            SELECT @TIME, I.DATABASENAME, I.TABLENAME, @STR_UPDATESTATS, 'OK' FROM #STATISTICSTOUPDATE I WHERE ID = @ID;    
        END TRY
        BEGIN CATCH
            INSERT INTO [DBA].[LOGUPDATESTATISTICS] ([DATA], [DATABASE], [TABLE_NAME], [SCRIPT_REBUILD], [STATUS], [ERROR_MESSAGE]) 
            SELECT @TIME, I.DATABASENAME, I.TABLENAME, @STR_UPDATESTATS, 'OK', ERROR_MESSAGE() FROM #STATISTICSTOUPDATE I WHERE ID = @ID;
        END CATCH
    END
    DELETE FROM #STATISTICSTOUPDATE WHERE ID = @ID;
END


DROP TABLE #STATISTICSTOUPDATE;
END
GO

Нет файла транзакции

create index ix_teste on [DBO].Table_EXTRACAO_10 (marketplace);

Повторяемоеработает нормально, но нет родной нет, я уже пытался изменить имя на V_

...