আমি বেশ কয়েকটি এসকিউএল সার্ভার এজেন্ট কাজ পেয়েছি যা ক্রমান্বয়ে চালানো উচিত। যে কাজগুলি কার্যকর করা উচিত তার একটি সুন্দর ওভারভিউ রাখতে আমি একটি প্রধান কাজ তৈরি করেছি যা অন্য কাজগুলিকে কল দিয়ে কল করে EXEC msdb.dbo.sp_start_job N'TEST1'
। sp_start_job
শেষ অবিলম্বে (ইয়োব ধাপ 1), কিন্তু তারপর আমি অপেক্ষা করতে আমার মূল চাকরি চাও পর্যন্ত কাজ TEST1
পরবর্তী কাজ কল করার আগে সমাপ্ত হয়েছে।
সুতরাং আমি এই ছোট স্ক্রিপ্টটি লিখেছি যা কাজটি ডাকা হওয়ার ঠিক পরে (জব স্টেপ 2) চালানো শুরু করে এবং মূল কাজটি সাব জব শেষ না হওয়া পর্যন্ত অপেক্ষা করতে বাধ্য করে:
WHILE 1 = 1
BEGIN
WAITFOR DELAY '00:05:00.000';
SELECT *
INTO #jobs
FROM OPENROWSET('SQLNCLI', 'Server=TESTSERVER;Trusted_Connection=yes;',
'EXEC msdb.dbo.sp_help_job @job_name = N''TEST1'',
@execution_status = 0, @job_aspect = N''JOB''');
IF NOT (EXISTS (SELECT top 1 * FROM #jobs))
BEGIN
BREAK
END;
DROP TABLE #jobs;
END;
এটি যথেষ্ট ভাল কাজ করে। তবে আমি অনুভূতিটি আরও স্মার্ট এবং / অথবা নিরাপদ ( WHILE 1 = 1
?) সমাধানগুলি সম্ভব হওয়া উচিত পেয়েছি ।
আমি নিম্নলিখিত বিষয়গুলি সম্পর্কে আগ্রহী, আশা করি আপনি আমাকে কিছু অন্তর্দৃষ্টি সরবরাহ করতে পারেন:
- এই পদ্ধতির সাথে সমস্যাগুলি কী?
- আপনি কি এটি করার জন্য আরও ভাল উপায়ের পরামর্শ দিতে পারেন?
(আমি এই প্রশ্নটি প্রথমে স্ট্যাকওভারফ্লোতে পোস্ট করেছি , কারণ আমি কোডের উন্নতির দিকে মনোনিবেশ করছিলাম Still তবে এখনও বৈধ gu তবে আমার ধারণা হ'ল এখানে লোকেরা কেন আমাকে এভাবে করার চেষ্টা করবেন না সে সম্পর্কে সাধারণভাবে বুদ্ধিমান জিনিস থাকবে '' আমি এখনই এটি করছি, বা ভাল বিকল্প সরবরাহ করি))
সম্পাদনা (25 জুলাই)
স্পষ্টতই আমার স্ক্রিপ্টটির সাথে খুব বেশি ভুল নেই, এর সাথে সমস্যাগুলির দিকে ইঙ্গিত করে এমন কম সংখ্যক উত্তর অনুসারে :-) এই ধরণের স্ক্রিপ্টিংয়ের বিকল্প মনে হয় এই সরঞ্জামগুলির জন্য ডিজাইন করা একটি সরঞ্জাম ব্যবহার করা কাজগুলি (যেমন এসকিউএল সেন্ট্রি ইভেন্ট ম্যানেজার বা ...) - বা এই জাতীয় একটি সরঞ্জাম নিজেই লিখতে হয়। আমরা আমার বর্তমান সংস্থায় এ জাতীয় কোনও সরঞ্জাম কিনব না, সুতরাং আপাতত আমি কেবল স্ক্রিপ্টটি আটকে দেব।