SSISDB के लिए ExecutionInstanceGUID संबंधित


13

SQL सर्वर इंटीग्रेशन सर्विसेज, SSIS की 2012 रिलीज़ ने एक SSISDB कैटलॉग दिया है जो पैकेज के संचालन को ट्रैक करता है (अन्य चीजों के बीच)। प्रोजेक्ट परिनियोजन मॉडल का उपयोग कर समाधान के लिए डिफ़ॉल्ट पैकेज निष्पादन SSISDB लॉगिंग चालू होगा।

जब एक पैकेज निष्पादित होता है, तो System::ExecutionInstanceGUIDएक मूल्य के साथ आबादी होती है, अगर कोई स्पष्ट लॉगिंग का उपयोग कर रहा था (में sys.sysdtslog90/ sys.sysssislog) एक विशिष्ट पैकेज निष्पादन के लिए सभी घटनाओं को रिकॉर्ड करेगा।

मैं जो जानना चाहता हूं, वह है कि मैं SSISDB कैटलॉग में कुछ भी ExecutionInstanceGUID को कैसे बाँधूँ। वैकल्पिक रूप से, SSISDB प्रिवी में एक SSIS पैकेज है, जो इसके मूल्य पर लागू होता हैcatalog.executions.execution_id

अंततः, मैं मौजूदा, कस्टम ऑडिट टेबल का उपयोग करने और SSISDB सूची में विस्तृत इतिहास से इसे वापस जोड़ने की कोशिश कर रहा हूं, लेकिन लिंक को खोजने के लिए प्रतीत नहीं हो सकता है।

जवाबों:


5

एक टिप्पणी के लिए बहुत, लेकिन कुछ कोशिश कर रहा है। उस सिस्टम टेबल कैटलॉग के msdn पेज से। मुझे प्राप्त होने वाले लाभ:

निष्पादन_निधि - bigint - निष्पादन के उदाहरण के लिए विशिष्ट पहचानकर्ता (आईडी)।

इस लेख से - एसएसआईएस २०१२ - विगत परीक्षाओं के लिए कनेक्शन प्रबंधक सूचना देखें - मैं समझता हूं कि:

SSIS 2012 पैकेजों के अंदर आपके उपयोग के लिए एक नया सिस्टम वैरिएबल, ServerExecutionID प्रदान करता है, इसलिए यदि आप कोई कस्टम लॉगिंग / नोटिफिकेशन करते हैं तो यह शामिल करने के लिए एक अच्छा चर है क्योंकि यह कैटलॉग के विचारों के लिए एक सीधा सूचक होगा जिसे हम खोजने के लिए उपयोग करेंगे। कनेक्शन की कड़ी जानकारी। ... कैटलॉग.एक्सएक्शंस में प्रति निष्पादन एक पंक्ति होती है। यह वह जगह है जहां हम निष्‍पादन_से फ़िल्टर करेंगे।

एक नमूना प्रश्न के साथ:

DECLARE @execution_id BIGINT = 41753; -- Your execution_id/ServerExecutionID goes here.
SELECT e.package_name,
        e.start_time,
        e.end_time,
        e.status,
        emc.package_path,
        CAST(emc.property_value AS VARCHAR(1000)) AS connection_string
   FROM catalog.executions e
   JOIN catalog.event_messages em
     ON e.execution_id = em.operation_id
   JOIN catalog.event_message_context AS emc WITH (FORCESEEK)
     ON em.event_message_id = emc.event_message_id
    AND emc.property_name = 'ConnectionString'
    AND emc.context_type = 80 -- Connection Managers
  WHERE e.execution_id = @execution_id;

जो मैं नहीं देख रहा हूं वह इस तालिका में आपका ExecutionInstanceGUID है। हालाँकि, मैं देख रहा हूँ कि यह प्राचीन कनेक्ट आइटम है जहाँ निम्नलिखित कहानी है:

SSIS RunningPackage.InstanceID! = सिस्टम :: ExecutionInstanceGUID हालांकि वे समान होना चाहिए।

तो मेरा निष्कर्ष यह है कि ExecutionInstanceGUID निष्पादन_id से संबंधित नहीं है, लेकिन कुछ InstanceId कॉलम, यदि आप SSISDB में हो सकते हैं।


9

मैंने 2012 परिनियोजन मॉडल का उपयोग करते हुए एक पैकेज से मिलकर एक SSIS प्रोजेक्ट बनाया। उस पैकेज में, मैंने एक OLE DB कनेक्शन प्रबंधक जोड़ा, इसे tempdb को इंगित किया और कैनवास पर एक स्क्रिप्ट टास्क को छोड़ दिया। मैंने उस OLE DB कनेक्शन प्रबंधक का उपयोग करते हुए स्पष्ट लॉगिंग चालू की और OnInformationइवेंट पर कब्जा कर लिया ।

स्क्रिप्ट कार्य के साथ नियंत्रण प्रवाह - एससीआर फायर जानकारी

एससीआर फायर की जानकारी

मैंने अपने स्क्रिप्ट कार्य को दो मापदंडों को हथियाने के लिए कॉन्फ़िगर किया है: System::ExecutionInstanceGUIDऔर System::ServerExecutionIDमैं इस बिंदु पर स्वीकार करूंगा, मैंने मैरियन के उत्तर तक दूसरे चर को नहीं देखा था । कार्य के अंदर, मैं 2 सूचना कार्यक्रम बढ़ाता हूं ताकि मैं दर्ज किए गए मूल्यों को प्राप्त कर सकूं। यह स्पष्ट तालिका (dbo.sysssislog) और "फ्री" लॉगिंग (कैटलॉग.परेशन_मेज़ेज) दोनों के लिए लॉग इन किया जाना चाहिए।

    public void Main()
    {
        bool fireAgain = true;
        string description = string.Empty;
        string variable = string.Empty;
        string value = string.Empty;

        variable = "System::ServerExecutionID";
        value = Dts.Variables[variable].Value.ToString();
        description = string.Format("{0}: {1}", variable, value);
        Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);

        variable = "System::ExecutionInstanceGUID";
        value = Dts.Variables[variable].Value.ToString();
        description = string.Format("{0}: {1}", variable, value);
        Dts.Events.FireInformation(0, "Reporting", description, string.Empty, 0, ref fireAgain);

        Dts.TaskResult = (int)ScriptResults.Success;
    }

तैनात करें और निष्पादित करें

मैंने तब अपनी परियोजना को एक सर्वर पर तैनात किया और इसे निष्पादित किया।

ऑपरेशन रिपोर्ट, ऑपरेशन आईडी 8 देखने के लिए प्रेरित करें

मैंने ऑपरेशन रिपोर्ट खोली और SCR Fire infoकार्य विवरण में क्लिक किया ।

ऑपरेशन का विवरण

लाल परिचालित आइटम से पता चलता है कि हम उम्मीद के मुताबिक ऑपरेशन 8 के लिए विवरण देख रहे हैं। हाइलाइट की गई रेखाएँ वे OnInformationघटनाएँ हैं जो उन दो सिस्टम वेरिएबल्स के मानों को जोड़ देती हैं। जैसा कि अपेक्षित System::ServerExecutionIDथा, रिपोर्ट में जो मिला था उसका मूल्य भी था। मूल्य System::ExecutionInstanceGUIDहमेशा की तरह अर्थहीन था लेकिन यह {3F515780-8062-40AA-B9EC-C320CBAC5EFD} मौजूद था।

यह सब एक साथ बांधना

अब मेरे पास दो अलग-अलग लॉग थे जिन्हें मैं एक साथ बांधना चाहता था।

sysssislog क्वेरी

इस क्वेरी को चलाने से पुराने स्कूल लॉगिंग टेबल से प्रासंगिक पंक्तियों को वापस खींच लिया गया।

SELECT
    L.event
,   L.source
,   L.message 
FROM
    dbo.sysssislog AS L
WHERE
    L.executionid = '{3F515780-8062-40AA-B9EC-C320CBAC5EFD}'
ORDER BY
    L.id ASC;

परिणाम जैसे दिख रहे थे

event   source  message
PackageStart    ParameterTest   Beginning of package execution.

OnInformation   SCR Fire info   System::ServerExecutionID: 8
OnInformation   ParameterTest   System::ServerExecutionID: 8
OnInformation   SCR Fire info   System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
OnInformation   ParameterTest   System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}
PackageEnd  ParameterTest   End of package execution.

कैटलॉग.ओपरेशन_मेज़ेज क्वेरी

SSISDB कैटलॉग के खिलाफ इस क्वेरी को चलाने से उन सभी संदेशों को दिखाया गया जो उपरोक्त रिपोर्ट में थे और यह भी पुष्टि की थी कि मैं मूल्य को messageऔर operation_idसाथ ही साथ करने के लिए लिंक कर सकता हूंdbo.sysssislog.executionid

SELECT 
    OM.* 
FROM 
    catalog.operation_messages AS OM
WHERE
    OM.operation_id = 8;

वे परिणाम थे

operation_message_id    operation_id    message_time    message_type    message_source_type message extended_info_id
30  8   2013-04-02 21:02:34.1418917 -05:00  10  30  ParameterTest:Validation has started.   NULL
31  8   2013-04-02 21:02:34.1738922 -05:00  10  40  SCR Fire info:Validation has started.   NULL
32  8   2013-04-02 21:02:34.1768872 -05:00  20  40  SCR Fire info:Validation is complete.   NULL
33  8   2013-04-02 21:02:34.1788903 -05:00  20  30  ParameterTest:Validation is complete.   NULL
34  8   2013-04-02 21:02:34.3349188 -05:00  30  30  ParameterTest:Start, 9:02:34 PM.    NULL
35  8   2013-04-02 21:02:34.4009253 -05:00  30  40  SCR Fire info:Start, 9:02:34 PM.    NULL
36  8   2013-04-02 21:02:34.4009253 -05:00  10  40  SCR Fire info:Validation has started.   NULL
37  8   2013-04-02 21:02:34.4019251 -05:00  20  40  SCR Fire info:Validation is complete.   NULL
38  8   2013-04-02 21:02:34.4219283 -05:00  70  40  SCR Fire info:Information: System::ServerExecutionID: 8 NULL
39  8   2013-04-02 21:02:34.4259295 -05:00  70  40  SCR Fire info:Information: System::ExecutionInstanceGUID: {3F515780-8062-40AA-B9EC-C320CBAC5EFD}    NULL
40  8   2013-04-02 21:02:34.4409316 -05:00  40  40  SCR Fire info:Finished, 9:02:34 PM, Elapsed time: 00:00:00.031. NULL
41  8   2013-04-02 21:02:34.4419388 -05:00  40  30  ParameterTest:Finished, 9:02:34 PM, Elapsed time: 00:00:00.125. NULL

लपेटें

जब पैकेज को SSISDB कैटलॉग के संदर्भ के बाहर निष्पादित किया जाता है (SSDT-BI के माध्यम से उर्फ ​​या a .ispac के लिए कमांड लाइन) का मान System::ServerExecutionIDहोगा 0. यह समझ में आता है, लेकिन भविष्य के पाठक या तो एक LEFT OUT JOIN का उपयोग करते हैं। जब catalog.operation_messages को sysssislog जोड़ने आप को पकड़ने के लिए चाहते हैं, तो सभी पैकेज के लिए सजा।

हैट टिप, मेरा हार्दिक धन्यवाद और जवाब श्रेय मुझे सही रास्ते पर लाने के लिए मैरिएन को जाता है। मेरे सारांश लॉगिंग टेबल में एक GUID (16 बाइट्स) और एक बिगिन्ट (8 बाइट्स) के भंडारण के बीच की पसंद को देखते हुए, यह मेरे लिए कोई ब्रेनर नहीं है: कृपया बड़े पैमाने पर बड़े पूर्णांक को बढ़ाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.