17.00 - 17.05 - ANSIモードとTeradataセッション モードでのトランザクションの意味の違い - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

異なるセッション モードの異なるトランザクションの意味について

トランザクションの処理を次のいずれかのセッション モードで実行できます。
  • ANSI
  • Teradata
  • 2PC

デフォルトのセッション モードについて

Teradataセッション モードでは、レガシー アプリケーションとの互換性が保証されます。ただし、以下のようないくつかの制約があります。
  • 既存のデータベースをアップグレードするときには、既存のユーザーおよびアプリケーションとの互換性を保つために、システム デフォルトを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フィールドの設定の詳細については、以下のマニュアルを参照してください。
  • Teradata® CLI V2メインフレーム接続システム、B035-2417
  • Teradata® CLI V2ワークステーション接続システム、B035-2418

ODBC APIに基づくクライアント ソフトウェアを使用してセッション モードを切り替える方法については、そのソフトウェアに関連した製品マニュアルを参照してください。セッション モードの変更については、<Teradata Vantage™ - SQLの基本、B035-1141>も参照してください。

トランザクションの終了

ANSIセッション モードでもTeradataセッション モードでも、アプリケーションによって開始された非同期のアボートによって、トランザクションが完全にロールバックされます。そのようなリクエストは、次のコマンドによって生成されます。
  • CLIv2のアボート リクエスト
  • アプリケーションがセッションのクリーンナップを正しく行なわずに終了したときのTDP
  • BTEQでの.ABORT

TeradataおよびANSIセッション モードのどちらの場合でも、セッションがトランザクションをオープンしたままで終了した場合にそのトランザクションの効果はロールバックされ、一時ジャーナルは削除され、そしてオープンしているカーソルは閉じるというルールが適用されます。

ANSIセッション モードで、リクエスト エラーはトランザクションのロールバックを引き起こしません。それらを引き起こすリクエストのロールバックのみです。トランザクションの終了がデータベースの整合性を保持する上で必要でない限り、システムが任意にトランザクションをクローズさせることはありません。

ANSIセッション モードでは、INSERTまたはUPDATEリクエストに対する制約違反などのエラーによって、違反しているトランザクションがロールバックされることはありません。それらのエラーは現在のリクエストをロールバックするに過ぎません。

モード特有のSQL文の制限

次の文以外のすべてのSQL文が両方のセッション モードで許可されます。

SQL文 それが無効であるセッション モード
  • BEGIN TRANSACTION
  • BT
ANSI
  • END TRANSACTION
  • ET
COMMIT [WORK] Teradata

データベースにログインするためにPreprocessor2のTRANSACT(COMMIT)オプションを指定した場合は、Teradataセッション モードでCOMMITリクエストを実行して、Preprocessor2アプリケーションからトランザクションを終了できるという例外があります。

その他のセッション モード固有の機能と制限

トランザクション処理では、次に示す付加的なセッション モード固有の機能と制限が適用されます。
  • セッション プール マネージャ

    セッション プール マネージャによって、プールされたセッションをTeradataまたはANSIセッション モードに設定することができます。

  • 2フェーズ コミット(2PC)プロトコル

    Teradata Databaseでは、2PCプロトコル(2PCについての簡潔な説明は、<Teradata Vantage™ - Databaseの概要、B035-1091>を参照)はTeradataセッション モードでサポートしますが、ANSIセッション モードはサポートしていません。

    ANSIセッション モードで2PCプロトコルの使用を試行すると、ログオン処理がアボートし、失敗応答が返されます。