SQL Server 2012 catalog.executions to sysjobhistory - будь-який спосіб приєднатися до них?


9

Я вичерпав свої ресурси і не можу знайти надійний спосіб приєднати таблиці ssisdb.catalog до завдань, які їх виконують. Намагаючись написати деякі спеціальні відростки, щоб відстежувати час мого виконання та рядки, записані з таблиць каталогу, і було б дуже корисно мати можливість зв’язати їх разом із завданням виклику.

Я намагаюся з'ясувати, чи є якісь таблиці, за допомогою яких можна приєднатися до таблиці index.executions до msdb.sysjobhistory. Мені потрібно пов’язати, яке завдання називається пакетом SSIS, а потім використовувати дані у виконанні для мого аналізу.

Відповіді:


5

Не для будь-якого випадку. Але у мене є такий спосіб:

Він призначений лише для випадку в таблиці повідомлень систематичної історії, з'являється рядок:

"Ідентифікатор виконання: xxxxxxx".

У наступному запиті в останньому стовпці я витягую ExecutionId.

У випадку, якщо ExecutionId має значення, він може приєднатися:

SELECT * 
FROM (
    SELECT 
        h.step_name,  
        h.message, 
        h.run_status, 
        h.run_date, 
        h.run_time, 
        SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,PATINDEX('%[^0-9]%',SUBSTRING(h.message, NULLIF(CHARINDEX('Execution ID: ', h.message),0)+14 ,20))-1) ExecutionId
    FROM MSDB.DBO.SYSJOBHISTORY h) history
LEFT JOIN 
SSISDB.CATALOG.EXECUTIONS ex on ex.execution_id = history.ExecutionId

Зауважте, що також можна додавати ці таблиці:

LEFT JOIN SSISDB.CATALOG.OPERATION_MESSAGES om on history.ExecutionId = om.operation_id
LEFT JOIN SSISDB.CATALOG.EVENT_MESSAGES em on em.operation_id =history.ExecutionId 

2

Оновлення: Коротка відповідь: Там немає ЖОДНОГО способу з'єднання ssisdb.catalog таблиць робочих місць , які керують ними. У цих статтях Джеймі Томсона є хороша інформація :

Я здогадуюсь, те, що ви намагаєтеся зробити, вже робить Джеймі. Зверніться до sp_ssis_catalog, щоб побачити, відповідає він вашим потребам чи ні.

Я не знайшов способу приєднати таблиці ssisdb.catalog до завдань, які їх виконують. Щоб отримати назву роботи, ви можете звернутися до наступного:

Повідомлення про помилки SSIS від Кларка Бейкера


0

Коротка відповідь ТАК

SELECT TOP 200
M.[Message_time],
(SELECT TOP 1 Name from MSDB.dbo.SysJobs J INNER JOIN MSDB.dbo.SysJobSteps S (NOLOCK) ON 
        J.Job_ID = S.Job_ID WHERE S.Command like '%' +  M.[Package_Name] + '%') as Job_Name,
M.[Package_Name],
M.[Execution_path],
M.[Subcomponent_name],
M.[Message]
FROM SSISDB.[catalog].[Event_messages] M (NOLOCK)    
WHERE Event_name = 'OnError'
ORDER BY Message_time DESC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.