2017-02-01 5 views
1

2つの関連するストアドプロシージャを実行するために、SQL Server 2012でJOBを作成したいとします。SQL Serverジョブ内2つのストアドプロシージャ1つずつまたは同時に実行しますか?

Exec my_First_Procedure 
Exec my_Second_Procedure 

上記のようにJOBを作成すると、2番目のものは最初のものが完了した後に実行を開始するか、または両方のクエリが同時に実行されますか?

わかりやすくするためにアドバイスをありがとう。

+2

これらは順番に実行されます。最初のものが失敗した場合、2番目のものは実行されません。 –

答えて

6

T-SQLは、スクリプト言語です。ステートメントは順次実行されます。実際、これはほぼすべてのコンピュータ言語に当てはまります。通常は、物事を並行して実行するために何らかの努力を払わなければなりません。

最初の文が失敗した場合、2番目の文は実行されません。

SQL Serverには、物事を並行して実行する仕組みがあります。 1つの方法は、メッセージキュー機能を使用して、やや複雑です。メッセージキューhereについて読むことができます。また、非同期実行の対象となるブログには、oneなど、さまざまなブログがあります。

ジョブを使用することもできます。同時に実行する2つのジョブをスケジュールするだけです。

+0

ありがとうございます。最初のステートメントに時間がかかる場合は、2番目のステートメントが実行を開始するか、最初のステートメントの実行を待機します。 – DineshDB

2

コール2プロシージャとコールからジョブに1つのストア・プロシージャを作成します。両方のSPは新しいジョブ1内で実行されます.SPは1つまたは成功しなくても失敗します。

create procedure job1 
as 
begin try 
    begin try 
     exec my_First_Procedure; 
    end try 
    begin catch 
     select ERROR_MESSAGE() as messages; 
    end catch 

    begin try 
     exec my_Second_Procedure; 
    end try 
    begin catch 
     select ERROR_MESSAGE() as messages; 
    end catch 

    select 'Success' as messages; 
end try 
begin catch 
    select ERROR_MESSAGE() as messages; 
end catch 
関連する問題