SQL सर्वर 2012 कैटलॉग। Secjobhistory को जुड़ाव - उन्हें शामिल करने का कोई तरीका?


9

मैंने अपने संसाधनों को समाप्त कर दिया है और ssisdb.catalog तालिकाओं में शामिल होने वाली नौकरियों में शामिल होने के लिए एक मूर्खतापूर्ण तरीका नहीं खोज सकता। मेरे निष्पादन समय और कैटलॉग तालिकाओं से लिखी पंक्तियों की निगरानी के लिए कुछ कस्टम स्पोक्स लिखने की कोशिश करना, और कॉलिंग जॉब के साथ उन्हें टाई करने में सक्षम होना बहुत फायदेमंद होगा।

मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या कैटलॉग में शामिल होने के लिए किसी भी तालिकाओं का उपयोग किया जा सकता है। msdb.sysjobhistory पर तालिका। मुझे एसएसआईएस पैकेज नामक नौकरी से संबंधित होने की आवश्यकता है और फिर अपने विश्लेषण के लिए निष्पादन में डेटा का उपयोग करें।

जवाबों:


5

किसी मामले के लिए नहीं। लेकिन मेरे पास कुछ तरीका है:

यह केवल संदेश तालिका sysjobhistory में मामले के लिए डिज़ाइन किया गया है, स्ट्रिंग दिखाई देता है:

"निष्पादन आईडी: xxxxxxx"।

निम्नलिखित क्वेरी में, अंतिम कॉलम में मैं एक्सक्यूशन आई डी निकालता हूं।

यदि 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.