Недавно произошел сбой SSIS на рабочем сервере. Причина была в этой ошибке. После сбоя и до перезагрузки сервера каждую минуту в журнале SQL Server появлялись такие сообщения: ...

1
SebTHU 13 Янв 2021 в 12:00

1 ответ

Лучший ответ

В конечном итоге это просто таблицы во внутренней схеме SSISDB.

Catalog.executions определяется как

CREATE VIEW [catalog].[executions]
AS
SELECT     execs.[execution_id], 
           execs.[folder_name], 
           execs.[project_name], 
           execs.[package_name],
           execs.[reference_id],
           execs.[reference_type], 
           execs.[environment_folder_name], 
           execs.[environment_name], 
           execs.[project_lsn], 
           execs.[executed_as_sid], 
           execs.[executed_as_name], 
           execs.[use32bitruntime],  
           opers.[operation_type], 
           opers.[created_time],  
           opers.[object_type], 
           opers.[object_id],
           opers.[status], 
           opers.[start_time], 
           opers.[end_time],  
           opers.[caller_sid], 
           opers.[caller_name], 
           opers.[process_id], 
           opers.[stopped_by_sid], 
           opers.[stopped_by_name],
           opers.[operation_guid] as [dump_id],
           opers.[server_name],
           opers.[machine_name],
           ossysinfos.[total_physical_memory_kb],
           ossysinfos.[available_physical_memory_kb],
           ossysinfos.[total_page_file_kb],
           ossysinfos.[available_page_file_kb],
           ossysinfos.[cpu_count]
FROM       [internal].[executions] execs INNER JOIN [internal].[operations] opers 
           ON execs.[execution_id]= opers.[operation_id]
           LEFT JOIN [internal].[operation_os_sys_info] ossysinfos
           ON ossysinfos.[operation_id]= execs.[execution_id]
WHERE      opers.[operation_id] in (SELECT id FROM [internal].[current_user_readable_operations])
           OR (IS_MEMBER('ssis_admin') = 1)
           OR (IS_SRVROLEMEMBER('sysadmin') = 1)
           OR (IS_MEMBER('ssis_logreader') = 1)

status берется из таблицы internal.operations и имеет псевдоним opers.

Будучи ленивым, я бы просто обновил там запись, чтобы убрать ее с дороги, вместо того, чтобы пытаться отследить все укромные уголки и трещины, в которых хранятся дочерние атрибуты.

update opers
-- The status of the operation. The possible values are 
-- created (1), running (2), canceled (3), failed (4), pending (5), 
-- ended unexpectedly (6), succeeded (7), stopping (8), and completed (9).
SET status = 6 /* or 9 */
FROM
    [internal].[operations] opers 
WHERE
    opers.operation_id = 0 /* your TODO use the correct operation_id/execution_id there */
    AND opers.status IN (1,2,5,8); -- Created, Running, Pending, Stopping

Если вы все же хотите удалить, я думаю, это все еще актуально Как я могу очистить SSISDB?

1
billinkc 13 Янв 2021 в 15:59