目的
ユーザーをTeradata Databaseに接続します。
構文
次の図は、対話モードとバッチ モードの両方の構文を示します。
次のような場合に当てはまります。
- acctid
- useridに関連付けられたアカウントの識別子。
- password
- useridに関連付けられたパスワード。
- tdpid /
- 使用するTeradataサーバーのID。
- userid
- ユーザー識別子。
ユーザー ログオン出口ルーチン
コールレベル インターフェースのユーザー ログオン出口ルーチンを使用して、ログオン文字列のすべてまたは一部のオプション要素を作成することができます。
使用上の注意
バッチ モードで、すなわち入力ファイルからLOGONコマンドを入れる場合には、コマンド全体を1行に入れてください。 対話形式で入れる場合には、useridと同時にパスワードまたはアカウントIDを入力することはできません。
ユーザーがログオンしているときにLOGONコマンドを使用した場合には、いったん前のセッションがログオフされ、新しく入れたLOGONコマンドのuserid、tdpid、acctidで新たなセッションにログオンされます。 ページ長、ヘッダーなどの書式設定は、最初のログオン セッションから引き継がれます。
LOGONコマンドの実行時には、直前のSESSIONSコマンドによって指定されたTeradata Databaseのセッション数が対象とされます。 ログオンの対象とされるセッションを設定するために、LOGONコマンドの前にSESSIONSコマンドとTDPコマンドを入れなければなりません。 複数のセッションを指定して、1つのログオンに失敗した場合には、成功したセッションを使用して処理が続けられます。
LOGONコマンドは、Teradata SQLマクロでは使用できません。
Teradata Databaseには、LOGONリクエストで使用するオブジェクト名のサイズに関する制限があります。制限の詳細、およびマルチバイト文字を含むオブジェクト名によって派生する問題については、Teradata Databaseのマニュアルを参照してください。
LOGON文字列の個々の構成要素を区切るための文字(カンマなど)を含むユーザーIDやパスワードを指定する必要がある場合、それらの値は対の引用符で囲まなければなりません。
TDWALLET文字列を使用してLOGONコマンドのUserIDを表わした場合には期限切れのパスワードをリセットできません。
LOGONコマンドを使用して期限切れパスワードをリセットするとき、パスワードの関連TDWALLETエントリは更新されません。
tdpid識別子の指定
tdpid識別子(任意選択)に、使用するTeradata Databaseを指定します。 使用するTeradata Databaseの識別子については、システム管理者またはサイト管理者に問合わせてください。 tdpidを指定せず、しかもシステム管理者がシステム パラメータ ブロックを更新していなければ、ワークステーション接続クライアントの場合のデフォルトの識別子はDBCです。
LOGONコマンドでtdpidを指定した場合、そのtdpidは同じBTEQの実行単位でそれ以後使用されるLOGONコマンドのデフォルトのtdpidになります。 デフォルトのtdpidを変更するためには、TDPコマンドを使用するか、別のLOGONコマンドで新しいtdpidを指定します。
インストールされているTDPが1つしかない場合、前にTDPコマンドを実行していた場合、またはデフォルトのTDPを使用する場合には、tdpid識別子を指定しなくても構いません。 tdpidの値では、大文字と小文字が区別されないので、どちらでも使用できます。
LOGONコマンドを使用するたびに、TDP設定はLOGONに使用するtdpid識別子の値に設定されています。 LOGONコマンドの一部としてtdpid値を提供しておらず、初めてLOGONコマンドを使用する場合、TDPは事前定義のデフォルト値に設定されます。 tdpid値を提供しておらず、前にLOGONコマンドが発行されている場合、ログオンに現在のTDP設定を使用します。
ユーザーIDとパスワードの入力
BTEQを対話形式で使用する場合、ユーザーはログオン時に1つのtdpid(後ろはセミコロンか空白にする)しか入力できません。 tdpidが受け入れられると、入力領域がクリアされ、useridの入力を求めるプロンプトが次のように表示されます。
Userid:
useridの後には、セミコロンかカンマを入力するか、または空白にすることができます。 ログオン文字列が受け入れられると、入力領域がクリアされ、パスワードの入力を求めるプロンプトが次のように表示されます。
Password:
useridに関連付けられたパスワードを入力します。必要があれば、パスワードと同じ行に続けてacctidを指定します。 パスワードの値全体を引用符で囲んだ場合を除き、パスワードの中、または最後にセミコロン(;)を入れることはできません。 acctidの後は、セミコロンか空白にすることができます。
acctid識別子の指定
acctid文字列には特殊文字を含めることができます。ただし、特殊文字の解釈は出力デバイスごとに異なります。 出力を別のデバイスに送る場合には、特殊文字を含んだスクリプトの修正が必要になる場合もあります。 そのため、acctid文字列での特殊文字の使用は避けてください。
acctidに単一引用符が含まれている場合は、次のように、LOGONコマンドの2つの形式、つまり、区切り記号として二重引用符を付けた形式を使用するか、または単一引用符を二重にします。
.LOGON 0/fml,fml, "engineering's account"
または
.LOGON 0/fml,fml,'engineering''s account'
単一引用符がacctidに含まれていない場合には、2つの形式のLOGONコマンドは同じです。
例1 – LOGONのアカウント値
アカウント値を対話型LOGON文の一部として指定する場合、以下の構文を使用します。
.LOGON tdpid/user,,'accountid';
(基本的に、2つの連続するカンマは、BTEQにパスワードの入力を求めるよう指示します。)
例2 – パスワードのアカウント値
アカウント値を対話型LOGONでのパスワード入力の一部として指定する場合、以下の構文を使用します。
passwd, 'accountid'
入力したパラメータに誤りがある場合
パラメータに誤りがあればログオンに失敗し、エラー メッセージが表示されます。 セキュリティ上の理由から、エラー メッセージにはどのパラメータでエラーが発生したかは示されません。
LOGONPROMPTコマンドの使用
LOGONPROMPTコマンドを使用すると、会話式LOGONコマンドを使用する場合のプロンプトと警告の表示を省略できます。 LOGONPROMPTをONに設定すると、LOGONコマンドは通常どおり動作します。
- ログオン時にuseridやパスワードの入力を省略する場合、BTEQからのプロンプトは表示されません。 そのため、通常のログオン文字列を入力する場合は、LOGONコマンドを完全に修飾して入力しなければなりません。
- セッションが開始される前に以下のコマンドを使用することはできません。
- =コマンド
- COMPILEコマンド
- REPEATコマンド
- SQL文
例 - LOGONPROMPTのOFFへの設定
以下は、LOGONPROMPTをOFFに設定している例です。sluggerにtdpidを指定してログオンしています。
.SET LOGONPROMPT OFF; .LOGON slugger/;
BTEQの応答
*** Logon successfully completed.
セキュリティの配慮
メインフレーム接続システムの場合に、パスワードのセキュリティが心配であれば、LOGONコマンドを別のデータ セットまたはファイルから受け入れるように、JCLを変更することもできます。通常、それらのデータ セットまたはファイルは、ACF2などのクライアントのセキュリティ システムの管理下に置かれています。例えば、次のようになります。
//stepname EXEC PGM=BTQMAIN,. . . //SYSIN DD DSN=. . .(data set containing .LOGON command) // DD *
パスワードなしのuseridだけでログオンできます。それにはシステム管理者の許可が必要です。
ネットワーク接続システムの場合は、Teradata Walletを使用してTeradata Databaseパスワードの機密を維持し、スクリプトで公開しないようにすることができます。 LOGONコマンドでユーザー名およびパスワード フィールドにTeradata Walletを使用する場合の詳細については、<セキュリティ管理ガイド、B035-1100>を参照してください。
connect_waitオプションによる待ち時間の短縮
ホスト グループに使用不可能なノード、AP、またはCOPが1つ以上存在する場合は、BTEQセッションにログオンする時間が通常よりも長くかかります。また、CLIが、使用不可能なプロセッサを通して複数のセッションに接続しようとしたときには、この時間が一層長くなります。 clispb.datオプションのconnect_waitを使用すると、CLIv2が別のノード、AP、またはCOPをポーリングするまでの応答待ちの時間を短縮することができます。
User Logon Exit(ユーザー ログオン出口)ルーチンまたはconnect_waitオプションを使用する場合の詳細については、<Teradata CLI V2リファレンス - メインフレーム接続システム、B035-2417>または<Teradata Call-Level Interface Version 2リファレンス - ワークステーション接続システム、B035-2418>を参照してください。
例1 – バッチ モードでのLOGON
バッチ モードで、ユーザーABC、パスワードABC(パスワードは表示されません)を使用してログオンするためには、1行にLOGONコマンドを指定します。
.logon ABC,ABC
BTEQの応答
LOGONコマンドを指定すると、次のように表示されます。
*** Logon successfully completed. *** Total elapsed time was 3 seconds.
例2 – 対話方式のLOGON
対話形式で、ユーザーABCを使用してログオンするには、次のように入力します。
.logon ABC
BTEQの応答
ユーザー名を指定すると、パスワードの入力を求めるプロンプトが表示されます。
Password:
パスワードを指定すると、次のように表示されます(入力したパスワードは表示されません)。
*** Logon successfully completed. *** Total elapsed time was 3 seconds.
例3 – 二重引用符を使用した単一引用符の除去の回避
UNIXまたはLinuxシェルを使用してBTEQの呼び出しの一部として含まれるLOGONコマンドのアカウント値を指定すると、その値を囲む引用符が取り除かれ、CLI 303エラーが発生することがあります。これを防ぐには、次の例に示すように、2つ目の二重引用符を追加します。
bteq .LOGON tdpid/user,passwd,"'accountid'";