ব্যর্থ এসকিউএল কাজগুলি দেখানোর জন্য কী প্রশ্ন


17

ব্যর্থ এসকিউএল কাজগুলি প্রদর্শন করার জন্য কোয়েরি কী, যাতে আমি একটি ব্যয়ের সাথে সমস্ত ব্যর্থ কাজের তথ্য পেতে পারি


এই চেক করুন stackoverflow.com/questions/10577676/...
vijayp

উত্তর:


12

আউটপুট ফাইলগুলিতে যাওয়ার জন্য কাজগুলি কনফিগার করা যেতে পারে বলে আপনি একটি ক্যোয়ারী সহ সত্যই "সমস্ত" কাজের তথ্য পাবেন বলে আমি মনে করি না। টেপগুলিতে রিপোর্ট করা বা লেখা থেকে আউটপুট ফাইলগুলি অনেক সময়ে আরও তথ্য পেতে পারে msdb

তবে, এসএসএমএসের মাধ্যমে কাজের ইতিহাস দেখে যে ভিউটি পাওয়া গেছে তা কেবলমাত্র ব্যর্থ চাকরিগুলি ফেরত দেওয়ার জন্য এই প্রশ্নের সাথে টানা যাবে (উদাহরণস্বরূপ যদি কোনও কাজের 2 পদক্ষেপ থাকে এবং দ্বিতীয় ব্যর্থ এই কোয়েরিতে উভয় পদক্ষেপ ফিরে আসবে):

select j.name
    ,js.step_name
    ,jh.sql_severity
    ,jh.message
    ,jh.run_date
    ,jh.run_time
FROM msdb.dbo.sysjobs AS j
INNER JOIN msdb.dbo.sysjobsteps AS js
   ON js.job_id = j.job_id
INNER JOIN msdb.dbo.sysjobhistory AS jh
   ON jh.job_id = j.job_id AND jh.step_id = js.step_id
WHERE jh.run_status = 0

এখানে চিত্র বর্ণনা লিখুন


6

স্কেল সার্ভারে উপলব্ধ স্ট্যান্ডার্ড রিপোর্টগুলির মাধ্যমে আপনি এই তথ্যটি পেতে পারেন:

এসকিউএল সার্ভার এজেন্ট> স্ট্যান্ডার্ড রিপোর্টগুলিতে ডান ক্লিক করুন এবং কাজের ফাঁসি "ব্যর্থ ব্যক্তিরা বা প্রচুর সময় নিচ্ছেন" এর মতো কাঙ্ক্ষিত প্রতিবেদনটি নির্বাচন করুন .. আপনার প্রয়োজন অনুযায়ী প্রতিবেদনটি নির্বাচন করুন:

অথবা,

আপনি গত 24 ঘন্টা ব্যর্থতার সন্ধান করতে নীচের স্ক্রিপ্টটি ব্যবহার করতে পারেন:

-- Variable Declarations 

DECLARE @PreviousDate datetime  
DECLARE @Year VARCHAR(4)   
DECLARE @Month VARCHAR(2)  
DECLARE @MonthPre VARCHAR(2)  
DECLARE @Day VARCHAR(2)  
DECLARE @DayPre VARCHAR(2)  
DECLARE @FinalDate INT  

-- Initialize Variables  
SET @PreviousDate = DATEADD(dd, -1, GETDATE()) -- Last 1 day   
SET @Year = DATEPART(yyyy, @PreviousDate)   
SELECT @MonthPre = CONVERT(VARCHAR(2), DATEPART(mm, @PreviousDate))  
SELECT @Month = RIGHT(CONVERT(VARCHAR, (@MonthPre + 1000000000)),2)  
SELECT @DayPre = CONVERT(VARCHAR(2), DATEPART(dd, @PreviousDate))  
SELECT @Day = RIGHT(CONVERT(VARCHAR, (@DayPre + 1000000000)),2)  
SET @FinalDate = CAST(@Year + @Month + @Day AS INT)  

-- Final Logic 

SELECT   j.[name],  
         s.step_name,  
         h.step_id,  
         h.step_name,  
         h.run_date,  
         h.run_time,  
         h.sql_severity,  
         h.message,   
         h.server  
FROM     msdb.dbo.sysjobhistory h  
         INNER JOIN msdb.dbo.sysjobs j  
           ON h.job_id = j.job_id  
         INNER JOIN msdb.dbo.sysjobsteps s  
           ON j.job_id = s.job_id 
           AND h.step_id = s.step_id  
WHERE    h.run_status = 0 -- Failure  
         AND h.run_date > @FinalDate  
ORDER BY h.instance_id DESC  

এবং আপনার যদি রিপোর্ট হিসাবে তথ্যের প্রয়োজন হয় তবে এই লিঙ্কে কোডটি ব্যবহার করুন


টিপটির জন্য আপনাকে ধন্যবাদ, আমি ঠিক এটিই খুঁজছিলাম। আমি মনে করি একই ফলাফলগুলি পেতে আমরা ভেরিয়েবলগুলি কিছুটা সহজ করতে পারি:DECLARE @FinalDate INT; -- Initialize Variables SET @FinalDate = CAST(CONVERT(VARCHAR(10), DATEADD(dd, -1, GETDATE()), 112) AS INT) -- Yesterday's date as Integer in YYYYMMDD format -- Final Logic .... no change

1

আমি গত 24 ঘন্টা সমস্ত কাজের ত্রুটি পেতে শন মেল্টনের কোডটি কিছুটা সংশোধন করেছি। যোগদানের ক্ষেত্রে একটি বিবৃতি অনুপস্থিত ছিল, আমি এটিও ঠিক করেছিলাম। অনেক ধন্যবাদ শান, দুর্দান্ত জিনিস!


/*  Select all jobs with an error in the past 24 hours */
SELECT MSDB.dbo.agent_datetime(jh.run_date,jh.run_time) as date_time
    ,j.name as job_name,js.step_id as job_step,jh.message as error_message
    FROM msdb.dbo.sysjobs AS j
    INNER JOIN msdb.dbo.sysjobsteps AS js ON js.job_id = j.job_id
    INNER JOIN msdb.dbo.sysjobhistory AS jh ON jh.job_id = j.job_id AND jh.step_id = js.step_id
    WHERE jh.run_status = 0 AND MSDB.dbo.agent_datetime(jh.run_date,jh.run_time) >= GETDATE()-1
    ORDER BY MSDB.dbo.agent_datetime(jh.run_date,jh.run_time) DESC
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.