แค็ตตาล็อก SQL Server 2012 ไปสู่ ​​sysjobhistory - วิธีเข้าร่วมใด ๆ


9

ฉันใช้ทรัพยากรหมดและไม่สามารถหาวิธีป้องกันการเข้าร่วมตาราง ssisdb.catalog กับงานที่เรียกใช้ พยายามเขียน sprocs ที่กำหนดเองเพื่อตรวจสอบเวลาดำเนินการและแถวของฉันที่เขียนจากตารางแคตตาล็อกและมันจะเป็นประโยชน์อย่างมากที่จะสามารถเชื่อมโยงพวกเขาเข้าด้วยกันกับงานที่เรียก

ฉันพยายามที่จะดูว่ามีตารางใด ๆ ที่สามารถใช้เพื่อเข้าร่วมตาราง catalog.executions เพื่อ msdb.sysjobhistory ฉันต้องเกี่ยวข้องกับงานที่เรียกว่าแพคเกจ SSIS แล้วใช้ข้อมูลในการดำเนินการสำหรับการวิเคราะห์ของฉัน

คำตอบ:


5

ไม่ใช่สำหรับกรณีใด ๆ แต่ฉันมีวิธี:

มันถูกออกแบบมาเฉพาะสำหรับกรณีในตารางข้อความ sysjobhistory ปรากฏสตริง:

"Execution ID: 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 กับงานที่เรียกใช้พวกเขา มีข้อมูลที่ดีอยู่ในบทความเหล่านี้โดยJamie Thomson :

ฉันเดาว่าสิ่งที่คุณพยายามทำอยู่แล้วโดยเจมี่ อ้างถึง sp_ssis_catalog เพื่อดูว่าตรงกับความต้องการของคุณหรือไม่

ฉันไม่พบวิธีการเข้าร่วมตาราง ssisdb.catalog กับงานที่เรียกใช้ คุณสามารถอ้างถึงข้อมูลเชิงลึกต่อไปนี้เพื่อให้ได้ชื่องาน:

อีเมลรายงานข้อผิดพลาด SSISโดย Clark Baker


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.