অন্য কাজের মধ্যে একটি এসকিউএল সার্ভার কাজ কল করা


10

অন্য কোনও কাজের মধ্যে দৌড়ানোর জন্য কি এসকিউএল সার্ভারের কলকে কল করা সম্ভব?

আমি জানি আমরা জব 1 এর সমস্ত পদক্ষেপ জোব 2 তে যুক্ত করতে পারি, তবে আমি তা করতে পছন্দ করি না। প্রথম কাজ 2 ইতিমধ্যে বেশ বড় এবং দ্বিতীয়টি আমি কাজের মধ্যে পদক্ষেপগুলি অনুলিপি করার জন্য একটি অনুলিপি-পেস্ট বিকল্পটি খুঁজে পাইনি, সুতরাং পদক্ষেপগুলি ম্যানুয়ালি যোগ করা সময় সাপেক্ষ হবে।

কোন পরামর্শ প্রশংসা করা হয়।

উত্তর:


7
  • যার ধাপে আপনি যুক্ত করতে চান এবং "স্ক্রিপ্ট জব যেমন-> নতুন ক্যোয়ারী উইন্ডোতে তৈরি করুন" বেছে নিতে চান তার কাজের উপর ডান ক্লিক করুন, ফলাফলের স্ক্রিপ্টটিতে এই বিভাগের সমস্ত বিভাগ সন্ধান করুন
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', 
  @step_id=1, 
  @cmdexec_success_code=0, 
  @on_success_action=3, 
  @on_success_step_id=0, 
  @on_fail_action=2, 
  @on_fail_step_id=0, 
  @retry_attempts=0, 
  @retry_interval=0, 
  @os_run_priority=0, @subsystem=N'TSQL', 
  @command=N'<code>', 
  @database_name=N'', 
  @flags=0
  • একটি নতুন ক্যোয়ারী উইন্ডো খুলুন এবং এটি চালান:
DECLARE @jobId BINARY(16)
    SET @jobId = (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = '<job name, to which you want to copy the steps>')

-- Followed by all the msdb.dbo.sp_add_jobstep from the script that scripted out in the earlier step

    EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'<stepname>', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=3, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'TSQL', 
      @command=N'<code>', 
      @database_name=N'', 
      @flags=0

14

বিকল্প 1

জব 2-এ, টিএসকিউএল কমান্ড টাইপের একটি কাজের পদক্ষেপ তৈরি করুন। বিষয়বস্তুগুলিতে, এটি কি বিদ্যমান কাজ চালায় ( sp_start_job )

EXECUTE msdb.dbo.sp_start_job 'Job1'

এটি অবিচ্ছিন্নভাবে চালিত হতে চলেছে, সুতরাং এটি সঞ্চিত প্রক্রিয়া কল করার পরে, এটি ফিরে আসবে এবং কাজের পরবর্তী পদক্ষেপটি সম্পাদন করবে। এটি শুরু করা কাজটি শেষ হওয়ার জন্য অপেক্ষা করবে না। যদি কলযুক্ত কাজটি ব্যর্থ হয়, তবে তা চালানো চাকরিতে ফিরে যাবে না।

বিকল্প 2

নতুন ক্যোয়ারী উইন্ডোতে জব 1 এবং স্ক্রিপ্টে ডান ক্লিক করুন। জব 2 দিয়ে এটি পুনরাবৃত্তি করুন এবং তারপরে প্রয়োজনের হিসাবে 1 থেকে 2 তে কাজের পদক্ষেপগুলি থ্রেড করুন। চাকা পুনরুদ্ধার করার চেয়ে কম ক্লিক করা এবং আশা করা যায় যে কম ত্রুটি প্রবণ।


আপনার উত্তর দেওয়ার জন্য ধন্যবাদ. দেখে মনে হচ্ছে আমাদের ২ য় বিকল্পের জন্য যেতে হবে, যদিও আমি এটি সঠিকভাবে বুঝতে পেরেছি কিনা তা আমি নিশ্চিত নই। আপনি কি বলতে চান যে আমার উভয় কাজের জন্য স্ক্রিপ্ট তৈরি করা উচিত, এবং তারপরে জব 1 এর শেষের জন্য জব 2 এর পদক্ষেপগুলি যুক্ত করা উচিত? এটা কি সঠিক?
আকাশ

6

স্ট্যাকওভারফ্লো (মাফাফু) থেকে

WAITFOR DELAY '00:00:02';
while exists (select * from msdb.dbo.sysjobs j 
                inner join msdb.dbo.sysjobactivity a on j.job_id = a.job_id 
                where name = 'Job 1' 
                and stop_execution_date is null and start_execution_date is not null)
begin
    PRINT 'Waiting...'
    WAITFOR DELAY '00:00:02';   
end

এটি আমাদের জন্য কার্যকর ছিল, যেখানে আমাদের সন্ধ্যার পরে প্রথম কাজটি কার্যকর করার উপর ভিত্তি করে দ্বিতীয় কাজ (যা পরের দিন শুরুতে চালিত হয়) কার্যকর করতে বিলম্ব করা প্রয়োজন।
জেমস ডি

আমি একটি এসওয়াইএনসি (ডেইলি) এবং বর্ধমান (আওয়ারলি) কাজ চালাচ্ছি এবং এটি আমাকে বর্ধিতকরণের উপর নজর রাখতে এবং এসআইএনসি চালানো শেষ না হওয়া পর্যন্ত অপেক্ষা করতে সহায়তা করেছে।
snp.it
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.