Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » データベース・オプション » データベース・オプションの概要 » アルファベット順のオプション・リスト

 

post_login_procedure オプション [データベース]

ユーザが接続したときにアプリケーションが表示する必要のあるメッセージが結果セットに含まれるプロシージャを指定します。

指定可能な値

文字列

デフォルト

post_login_procedure システム・プロシージャ

スコープ

DBA 権限が必要です。

備考

post_login_procedure を空の文字列以外に設定すると、アプリケーションは、このオプションに指定されたプロシージャを接続プロセス中に呼び出し、ユーザに対して表示するメッセージを特定できます。このオプションには、owner.function-name という形式の値を指定する必要があります。これによって、ユーザが関数を無効にすることを防止できます。

このオプションを設定すると、Sybase Central 用の SQL Anywhere プラグインである Interactive SQL と dbisqlc がプロシージャを呼び出し、プロシージャが返すメッセージをウィンドウに表示します。SQL Anywhere に付属していないアプリケーションについては、必要に応じて、このオプションに指定されたプロシージャを呼び出してメッセージを表示するように変更を加えてください。

接続時にアプリケーションがメッセージを表示することが必要となる状況としては、パスワード有効期限システムを実装している場合に、パスワードの期限切れが近づいていることをユーザに通知することがあります。このような機能を利用すると、ユーザが接続するたびに、パスワードが期限切れとなることを数日前に知らせることができます。

このオプションに指定するプロシージャは、1 つ以上のローと 2 つのカラムで構成される結果セットを返す必要があります。1 つ目のカラムは VARCHAR(255) 型で、メッセージのテキスト (メッセージがない場合は NULL) を返します。2 つ目のカラムは INT 型で、アクションのタイプを返します。アクションとして指定可能な値は次のとおりです。

  • 0   メッセージを表示 (メッセージがある場合)

  • 1   メッセージを表示し、ユーザにパスワードの変更を要求

  • 2-99   予約

  • 100 以上   ユーザ定義

SQL Anywhere プラグインの dbisql と dbisqlc は、アクションの値にかかわらず、NULL 以外であれば、すべてのメッセージを表示します。アクションを 1 に設定すると、SQL Anywhere プラグイン と dbisql (dbisqlc ではない) はユーザにパスワードを変更するよう要求し、新しいパスワードをユーザ指定の値に設定します。

post_login_procedure の使用と、パスワード有効期限の運用などの詳細なパスワード規則の実装を示す例については、「パスワード検証関数の使用」を参照してください。

参照

次の例では、p_post_login_check というプロシージャを使用して、ユーザにパスワードの期限切れが近づいていることを知らせ、パスワードを変更するよう要求します。

CREATE PROCEDURE DBA.p_post_login_check( )
RESULT( message_text VARCHAR(255), message_action INT )
BEGIN
  DECLARE message_text        CHAR(255);
  DECLARE message_action     INT;
  
  -- assume the password_about_to_expire variable was 
  -- set by the login procedure
  IF password_about_to_expire = 1 THEN
    SET message_text = 'Your password is about to expire';
    SET message_action = 1;
  ELSE
    SET message_text = NULL;
    SET message_action = 0;
  END IF;
  -- return message (if any) through this result set
  SELECT message_text, message_action;
END;

GRANT EXECUTE ON DBA.p_post_login_check TO PUBLIC;

SET OPTION PUBLIC.post_login_procedure = 'DBA.p_post_login_check';