2017-08-22 22 views
0

SAP HANAの使用を開始しました。私はSQL Server環境から来ています。 SAP HANAに相当するBEGIN TRANはありますか?
コマンドRollbackCommitがあり、いつ動作するのか、いつ自動コミットするのか分かりません。
私はすべてのあなたのコマンドが実行されている私は、私は、SAP HANA(だけでなく、他のほとんどのDBMSで)でSAP HANA - 開始tran、ロールバック、コミット

答えて

0

を、自動コミットするには、以下の更新を望んでいないように指定することもできBEGIN TRANのようなものがあるかどうかを知りたいと思いました暗黙のトランザクションコンテキストで使用します。今すぐトランザクションを開始することを明示的に述べる必要はありません。

HANA Studioを使用する場合、デフォルトのセッション設定はAUTOCOMMITを使用することです。つまり、すべてのコマンドが1つのトランザクションで実行され、すぐにCOMMIT tedになります。 コマンドをまとめて1つのトランザクションにまとめるには、セッションパラメータをAUTOCOMMIT = falseに変更する必要があります。

さらに、コードをAUTONOMOUS TRANSACTIONで実行するオプションがあります。これは、基本的に手続きに独自の独立したトランザクションを与えます。

SAP HANAが提供していないもの(HANA 2 SP02まで)は、「サブトランザクション」または「ローカルトランザクション」です。つまり、MS SQL ServerのBEGIN TRANはネストしてCOMMITまたはROLLBACKネストされた方法で。

これは、もちろん、herehereと記載されているので、トランザクションの概念に精通しているとよいでしょう。

一般的な注意点:ストアドプロシージャ内のトランザクション管理では、明示的な中間結果セット(一時テーブルなど)を使用してデータの「段階的な」処理が行われることがよくあります。これは非常に高価なアプローチであり、HANA SQL Scriptのより柔軟な「データフロー」アプローチに置き換えてください。 INSERT/UPDATESの代わりにtempに。 SELECTの結果は単に変数に代入されます。 SQLスクリプトコンパイラは、最終的な(推移的な)データ変換の様子を実行時に把握し、未使用の変数や処理ステップをプルーニングし、可能であればSELECTをパラレル化し、同じ出力を高速かつ/またはリソース使用量を少なくして提供します。

私が言っていることは、基本的にMS SQL Serverのコードを直接移植するときに、SAP HANAでより良い方法が実現する可能性があることに注意してください。

一般的な発言II:明らかにこれは私の意見ですが、ストアドプロシージャを使用するとかなり混乱するサブトランザクションがあります。プロシージャコールツリーのすべてのサブトランザクションロジックを実際に知らなくても、クライアントアプリケーションはトランザクション処理を制御できなくなります。クライアントアプリケーションに何の兆候もせずに、クライアントがまだコミットしていなかったトランザクションが突然コミットまたはロールバックされたことが突然現れました。可能であれば、それは避けるべきである不一致のレシピです。

関連する問題