উত্তর:
আউটপুট ফাইলগুলিতে যাওয়ার জন্য কাজগুলি কনফিগার করা যেতে পারে বলে আপনি একটি ক্যোয়ারী সহ সত্যই "সমস্ত" কাজের তথ্য পাবেন বলে আমি মনে করি না। টেপগুলিতে রিপোর্ট করা বা লেখা থেকে আউটপুট ফাইলগুলি অনেক সময়ে আরও তথ্য পেতে পারে 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
স্কেল সার্ভারে উপলব্ধ স্ট্যান্ডার্ড রিপোর্টগুলির মাধ্যমে আপনি এই তথ্যটি পেতে পারেন:
এসকিউএল সার্ভার এজেন্ট> স্ট্যান্ডার্ড রিপোর্টগুলিতে ডান ক্লিক করুন এবং কাজের ফাঁসি "ব্যর্থ ব্যক্তিরা বা প্রচুর সময় নিচ্ছেন" এর মতো কাঙ্ক্ষিত প্রতিবেদনটি নির্বাচন করুন .. আপনার প্রয়োজন অনুযায়ী প্রতিবেদনটি নির্বাচন করুন:
অথবা,
আপনি গত 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
আমি গত 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