मैंने 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;
}
तैनात करें और निष्पादित करें
मैंने तब अपनी परियोजना को एक सर्वर पर तैनात किया और इसे निष्पादित किया।
मैंने ऑपरेशन रिपोर्ट खोली और 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 बाइट्स) के भंडारण के बीच की पसंद को देखते हुए, यह मेरे लिए कोई ब्रेनर नहीं है: कृपया बड़े पैमाने पर बड़े पूर्णांक को बढ़ाएं।