এসএসআইএসডিবি-তে এক্সিকিউশনআইনস্টান্সগিউডের সাথে সম্পর্কিত


13

এসকিউএল সার্ভার ইন্টিগ্রেশন সার্ভিসেস, এসএসআইএস-এর 2012 রিলিজ, একটি এসআইএসআইএসডিবি ক্যাটালগ সরবরাহ করেছে যা প্যাকেজগুলির ক্রিয়াকলাপ ট্র্যাক করে (অন্যান্য জিনিসের মধ্যে)। প্রকল্প ডিপ্লোয়মেন্ট মডেল ব্যবহার করে সমাধানের জন্য ডিফল্ট প্যাকেজ কার্যকর করাতে এসআইএসআইএসডিবিতে লগ ইন করা হবে।

যখন একটি প্যাকেজ সঞ্চালিত হয়, তখন System::ExecutionInstanceGUIDমানটি এমন একটি মান দিয়ে জনবহুল হয়, যদি কেউ স্পষ্টত লগিং ব্যবহার করে (to sys.sysdtslog90/ sys.sysssislog) নির্দিষ্ট প্যাকেজ সম্পাদনের জন্য সমস্ত ইভেন্ট রেকর্ড করে।

আমি যেটি জানতে চাই, তা হল কীভাবে আমি এসএসআইএসডিবি ক্যাটালগের কোনও কিছুর সাথে এক্সিকিউশনআইনস্ট্যান্স জিইডি বেঁধে রাখি। বিকল্পভাবে, একটি এসআইএসআইএস প্যাকেজ যার মূল্য এসএসআইএসডিবি প্রাইভেটে চালিত হয়catalog.executions.execution_id

শেষ পর্যন্ত, আমি বিদ্যমান, কাস্টম নিরীক্ষণ সারণীটি ব্যবহার করার চেষ্টা করছি এবং এসএসআইএসডিবি ক্যাটালগের মধ্যে এটি বিশিষ্ট ইতিহাসের সাথে আবার যুক্ত করব তবে লিঙ্কটি খুঁজে পেতে পারে না বলে মনে হচ্ছে।

উত্তর:


5

একটি মন্তব্যের জন্য খুব বেশি, কিন্তু কিছু চেষ্টা করে। এই সিস্টেমের টেবিলের এমএসডিএন পৃষ্ঠা থেকে ক্যাটালগ.অ্যাকশনগুলি পেয়েছি:

এক্সিকিউশন_আইডি - বিগিন্ট - কার্যকর করার উদাহরণের জন্য অনন্য সনাক্তকারী (আইডি)।

এই নিবন্ধটি থেকে - এসএসআইএস 2012 - অতীত মৃত্যুদণ্ড কার্যকর করার জন্য সংযোগ ব্যবস্থাপক তথ্য দেখুন - আমি বুঝতে পারি:

এসএসআইএস 2012 আপনার প্যাকেজগুলির অভ্যন্তরে আপনার ব্যবহারের জন্য একটি নতুন সিস্টেম ভেরিয়েবল, সার্ভারএক্সেকিউশনআইডি সরবরাহ করে, সুতরাং আপনি যদি কোনও কাস্টম লগিং / বিজ্ঞপ্তি করেন তবে এটি অন্তর্ভুক্ত করা ভাল পরিবর্তনশীল কারণ এটি ক্যাটালগ দর্শনের প্রত্যক্ষ পয়েন্টার হিসাবে আমরা খুঁজে পেতে ব্যবহার করব সংযোগ স্ট্রিং তথ্য। ... ক্যাটালগ.অ্যাকশনগুলিতে প্রতিটি কার্য সম্পাদনে একটি সারি থাকে। এখানেই আমরা এক্সিকিউশন_আইডি দ্বারা ফিল্টার করব।

এর একটি নমুনা ক্যোয়ারী সহ:

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;

আমি যা দেখছি না তা হ'ল এই টেবিলের আপনার এক্সিকিউশনআইনস্ট্যান্স জিইডি। আমি যা দেখছি তা হ'ল এই প্রাচীন কানেক্ট আইটেমটি যেখানে নিম্নলিখিত গল্প রয়েছে:

SSIS RunningPackage.InstanceID! = সিস্টেম :: এক্সিকিউশনআইনস্ট্যান্স জিইডি যদিও তাদের সমান হওয়া উচিত।

সুতরাং আমার উপসংহারটি হল এক্সিকিউশনআইনস্ট্যান্স জিইউডি এক্সিকিউশন_আইডির সাথে সম্পর্কিত নয় তবে কিছু ইনস্ট্যান্সআইডি কলাম রয়েছে, যদি আপনার এসএসআইএসডিবিতে থাকতে পারে।


9

আমি একটি একক প্যাকেজ সমন্বিত 2012 ডিপ্লোয়মেন্ট মডেল ব্যবহার করে একটি এসএসআইএস প্রকল্প তৈরি করেছি। সেই প্যাকেজে আমি একটি ওএল ডিবি সংযোগ ব্যবস্থাপক যুক্ত করেছি, এটি টেম্পডবিতে নির্দেশ করে একটি স্ক্রিপ্ট টাস্ক ক্যানভাসে ফেলেছি। আমি সেই 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

শেষ করি

যখন প্যাকেজটি এসআইএসআইএসডিবি ক্যাটালগের প্রেক্ষাপটের বাইরে নির্বাহ করা হয় (এসএসডিটি-বিআই বা একটি .ispac কমান্ড লাইন মাধ্যমে) এর মান System::ServerExecutionID0 হবে। এটি বোধগম্য হয় তবে ভবিষ্যতে পাঠকরা হয় একটি বাম আউটর জয়েন ব্যবহার করেন আপনি যদি প্যাকেজের সমস্ত ফাঁসী ধরতে চান তবে ক্যাটালগ.অপশন_মেসেজগুলিতে সিসিসলোগ যুক্ত করার সময় ।

হাট টিপ, আমার আন্তরিক ধন্যবাদ এবং উত্তর ক্রেডিট আমাকে সঠিক ট্র্যাকে রাখার জন্য মারিয়ানের কাছে যায়। আমার সংক্ষিপ্ততর লগিং টেবিলটিতে একটি জিইউইডি (16 বাইট) এবং বিগিন্ট (8 বাইট) সঞ্চয় করার মধ্যে পছন্দটি দেওয়া, এটি আমার পক্ষে কোনও ব্রেইনার নয়: দয়া করে একঘেয়েভাবে বড় ইন্টিজার বাড়িয়ে দিন please

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.