2017-11-21 3 views
0

ステージングテーブルにストリーミングの取り込みがあります。 5分ごとに、このステージングテーブルのすべてのデータをfinalテーブルに挿入/更新するストアドプロシージャを実行します。ストアドプロシージャのSQL Server:ストアドプロシージャ全体のロックテーブル

プロセス:私は、私はそれを切り捨ててしまうまで挿入用のステージングテーブルをロックすることを明示的に言うことができるか

BEGIN 
- UPDATE RECORDS IN FINAL TABLE FROM STAGING TABLE 
- INSERT RECORDS IN FINAL TABLE FROM STAGING TABLE 
- TRUNCATE STAGING TABLE 
HERE I WANT TO RELEASE THE LOCK 
END 

任意のアイデア?

答えて

0

これらのスクリプトは、このようなトランザクションブロックで実行できます。

BEGIN 
BEGIN TRANSACTION 
- UPDATE RECORDS IN FINAL TABLE FROM STAGING TABLE 
- INSERT RECORDS IN FINAL TABLE FROM STAGING TABLE 
- TRUNCATE STAGING TABLE 
COMMIT TRANSACTION 
HERE I WANT TO RELEASE THE LOCK 
END 

トランザクションブロックを完了するのに別のトランザクションが待機します。そしてtry/catchブロックを作成してエラーを処理する必要があります。スクリプトでエラーが発生した場合は、catchブロックのROLLBACK TRANSACTIONに連絡してください。トランザクションが開始されている場合は、COMMITまたはROLLBACKのように終了する必要があります。あなたはその取引が掛かっていることを望んでいません。

関連する問題