異なるセッション モードの異なるトランザクションの意味について
- ANSI
- Teradata
- 2PC
デフォルトのセッション モードについて
- 既存のTeradata Databaseをアップグレードするときには、既存のユーザーおよびアプリケーションとの互換性を保つために、システム デフォルトをTeradataセッション モードに設定してもよいでしょう。
- 新規の顧客の場合には、システムのデフォルトをANSIセッション モードに設定することを考慮するとよいでしょう。
セッションのデフォルト セッション モードは、その導入に対するシステムのデフォルトの設定に従います。 デフォルトのモードは、セッションのオプションのパーセルによって変更することができます。 パーセルは、接続またはログオン/実行パーセルのシーケンスとともにシステムに実行依頼されます。
セッション モードの変更
CLIv2 APIに基づくクライアント ソフトウェアを使用してセッションのモードを変更するには、以下のいずれかを行ないます。
クライアント ソフトウェア | 使用するコマンドまたはオプション | 切替え後のセッション モード |
---|---|---|
BTEQ | .[SET] SESSION TRANSACTION ANSI |
ANSI |
.[SET] SESSION TRANSACTION BTET |
Teradata | |
このBTEQコマンドを入力する前に、現在のTeradataセッションからログオフします。このコマンドは、Teradataセッションにログオンする前に入力する必要があります。 BTEQコマンドの使用法の詳細については、<Basic Teradata® Queryリファレンス、B035-2414>を参照してください。 |
||
Preprocessor2 | TRANSACT(ANSI) |
ANSI |
TRANSACT(BTET) TRANSACT(2PC) TRANSACT(COMMIT) |
Teradata | |
COMMITはデフォルトのオプションです。これは、Teradataトランザクションの意味に、ANSIセッション モードのみのCOMMITリクエストを使用してトランザクションを終了できる例外を付け加えます。 | ||
CLIv2 | set tx_semantics = 'A' |
ANSI |
set tx_semantics = 'T' |
Teradata | |
set tx_semantics = 'D' |
プラットフォームのデフォルト | |
tx_semanticsフィールドの設定の詳細については、以下のマニュアルを参照してください。
|
ODBC APIに基づくクライアント ソフトウェアを使用してセッション モードを切り替える方法については、そのソフトウェアに関連した製品マニュアルを参照してください。セッション モードの変更については、<Teradata Vantage™ SQL基礎、B035-1141>も参照してください。
トランザクションの終了
- CLIv2のアボート リクエスト
- アプリケーションがセッションのクリーンナップを正しく行なわずに終了したときのTDP
- BTEQでの.ABORT
TeradataおよびANSIセッション モードのどちらの場合でも、セッションがトランザクションをオープンしたままで終了した場合にそのトランザクションの効果はロールバックされ、一時ジャーナルは削除され、そしてオープンしているカーソルは閉じるというルールが適用されます。
ANSIセッション モードで、リクエスト エラーはトランザクションのロールバックを引き起こしません。それらを引き起こすリクエストのロールバックのみです。トランザクションの終了がデータベースの整合性を保持する上で必要でない限り、システムが任意にトランザクションをクローズさせることはありません。
ANSIセッション モードでは、INSERTまたはUPDATEリクエストに対する制約違反などのエラーによって、違反しているトランザクションがロールバックされることはありません。それらのエラーは現在のリクエストをロールバックするに過ぎません。
モード特有のSQL文の制限
次の文以外のすべてのSQL文が両方のセッション モードで許可されます。
SQL文 | それが無効であるセッション モード |
---|---|
|
ANSI |
|
|
COMMIT [WORK] | Teradata Teradata DatabaseにログインするためにPreprocessor2のTRANSACT(COMMIT)オプションを指定した場合は、Teradataセッション モードでCOMMITリクエストを実行して、Preprocessor2アプリケーションからトランザクションを終了できるという例外があります。 |
その他のセッション モード固有の機能と制限
- セッション プール マネージャ
セッション プール マネージャによって、プールされたセッションをTeradataまたはANSIセッション モードに設定することができます。
- 2フェーズ コミット(2PC)プロトコル
Teradata Databaseでは、2PCプロトコル(2PCについての簡潔な説明は、<Teradata Vantage™ - データベースの導入、B035-1091>を参照)はTeradataセッション モードでサポートしますが、ANSIセッション モードはサポートしていません。
ANSIセッション モードで2PCプロトコルの使用を試行すると、ログオン処理がアボートし、失敗応答が返されます。