Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pvase
Member

Откуда:
Сообщений: 1014
Здравствуйте. Задача, почистить логи выполнения пакетов SSISDB. Нашел вот такой скрипт (чистим все что старше 30 дней):
USE SSISDB;
SET NOCOUNT ON;
IF object_id('tempdb..#DELETE_CANDIDATES') IS NOT NULL
BEGIN
    DROP TABLE #DELETE_CANDIDATES;
END;

CREATE TABLE #DELETE_CANDIDATES
(
    operation_id bigint NOT NULL PRIMARY KEY
);

DECLARE @DaysRetention int = 30;

INSERT INTO
    #DELETE_CANDIDATES
(
    operation_id
)
SELECT
    IO.operation_id
FROM
    internal.operations AS IO
WHERE
    IO.start_time < DATEADD(day, -@DaysRetention, CURRENT_TIMESTAMP);

DELETE T
FROM
    internal.event_message_context AS T
    INNER JOIN
        #DELETE_CANDIDATES AS DC
        ON DC.operation_id = T.operation_id;

DELETE T
FROM
    internal.event_messages AS T
    INNER JOIN
        #DELETE_CANDIDATES AS DC
        ON DC.operation_id = T.operation_id;

DELETE T
FROM
    internal.operation_messages AS T
    INNER JOIN
        #DELETE_CANDIDATES AS DC
        ON DC.operation_id = T.operation_id;


DELETE T
FROM
    internal.operations AS T
    INNER JOIN
        #DELETE_CANDIDATES AS DC
        ON DC.operation_id = T.operation_id;

но здесь не все таблицы для очистки, например таблицы:
автор
[internal].[execution_parameter_values]
[internal].[executables]
[internal].[executable_statistics]

Как почистить еще и эти таблицы? Дело в том, что в этих таблицах нет поля operation_id, но зато есть [execution_id]. Подскажите, как можно получить список выполнений пакетов с условием по датам, чтобы почистить и эти три таблицы с условием по полю [execution_id]? Понимаю что надо смотреть в таблицу [internal].[executions], но в ней нет данных по дате запуска пакетов. Заранее спасибо.
14 ноя 16, 13:21    [19890920]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Pvase
Задача, почистить логи выполнения пакетов SSISDB.


Насколько я помню, есть процедуры в БД SSISDB, а поверх них джоб, который удаляет устаревшие данные и логи из SSISDB.
SSIS Maintanance Job вроде называется.
Гляньте как он удаляет.
Только там надо аккуратнее удалять, потому что настроено каскадное удаление по FK.
14 ноя 16, 13:34    [19891004]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Pvase,

во, нашел ссылку полезную: http://stackoverflow.com/questions/21781351/how-can-i-clean-up-the-ssisdb
14 ноя 16, 13:35    [19891015]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9169
Pvase,

что Вы сочиняете?
Открываете каталоги служб Integration Services, выбираете SSISDB, ПКМ клик, свойства, настраиваете.
14 ноя 16, 14:04    [19891216]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Владислав Колосов,

Да, верно.
Но я работал с сервером, где долгое время не чистились логи ( по-умолчанию они вроде год хранятся ), а потом разработчики увидели что логи занимают кучу места и попросили удалить.
По указанной вами настройке SSIS Maintanance Job начал удалять данные из логовых таблиц... и залочил выполнение всех пакетов.
Он их хранил условные 300 дней, а теперь ему говорят, что надо оставить данные только за 7 дней.
Не помню ньюансов, но пришлось проделывать те же действия, что и SSIS-овские процедуры из джоба делают, но ручками и в коротких транзакциях типа delete top 100...
Это я так, ТС-у говорю. Вдруг с такой же проблемой столкнется :)
14 ноя 16, 14:24    [19891374]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pvase
Member

Откуда:
Сообщений: 1014
Pavel1211
Владислав Колосов,

Да, верно.
Но я работал с сервером, где долгое время не чистились логи ( по-умолчанию они вроде год хранятся ), а потом разработчики увидели что логи занимают кучу места и попросили удалить.
По указанной вами настройке SSIS Maintanance Job начал удалять данные из логовых таблиц... и залочил выполнение всех пакетов.
Он их хранил условные 300 дней, а теперь ему говорят, что надо оставить данные только за 7 дней.
Не помню ньюансов, но пришлось проделывать те же действия, что и SSIS-овские процедуры из джоба делают, но ручками и в коротких транзакциях типа delete top 100...
Это я так, ТС-у говорю. Вдруг с такой же проблемой столкнется :)

Та же беда, база 25 гиг, Лог при удалении 40, а места на диске нету. Удаляю частями.
14 ноя 16, 15:19    [19891688]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9169
Pvase,

дык по месяцу убавляйте срок хранения или по неделе.
14 ноя 16, 15:45    [19891898]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4974
Установите размер порции
INSERT INTO
#DELETE_CANDIDATES
(
operation_id
)
SELECT TOP 9999
IO.operation_id
FROM
internal.operations AS IO
WHERE
IO.start_time < DATEADD(day, -@DaysRetention, CURRENT_TIMESTAMP);
14 ноя 16, 16:02    [19892000]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL2014 Очистка от старых данных SSISDB?  [new]
Pvase
Member

Откуда:
Сообщений: 1014
a_voronin
Установите размер порции
INSERT INTO
#DELETE_CANDIDATES
(
operation_id
)
SELECT TOP 9999
IO.operation_id
FROM
internal.operations AS IO
WHERE
IO.start_time < DATEADD(day, -@DaysRetention, CURRENT_TIMESTAMP);

Спасибо, то что надо.
16 ноя 16, 12:29    [19899529]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить