DBA 権限を持つユーザまたはプロシージャの所有者は、ストアド・プロシージャを実行するパーミッションを付与できます。EXECUTE パーミッションは、プロシージャに対して付与できる唯一のパーミッションです。
プロシージャを実行するパーミッションを与える方法は、テーブルとビューにパーミッションを与える方法と似ています。ただし、GRANT 文の WITH GRANT OPTION 句は、プロシージャに対するパーミッションの付与に適用されません。
Sybase Central または Interactive SQL のいずれかを使用して、パーミッションを設定できます。
DBA 権限のあるユーザとしてデータベースに接続します。
[プロシージャとファンクション] をクリックします。
プロシージャを右クリックして、[プロパティ] を選択します。
[パーミッション] タブをクリックします。
プロシージャのパーミッションを次の手順で設定します。
[付与] をクリックします。
ユーザまたはグループをダブルクリックします。
プロシージャを実行するためのパーミッションを許可または取り消すには、ユーザまたはグループを選択し、[実行] カラムをクリックします。チェックマークは、ユーザまたはグループがプロシージャを実行できることを示します。
すべてのパーミッションを取り消すには、ユーザまたはグループを選択して、[取り消し] をクリックします。
[適用] をクリックします。
[ユーザのプロパティ] または [グループのプロパティ] ウィンドウから、パーミッションを割り当てることもできます。パーミッションを複数のユーザまたはグループに割り当てるには、[プロシージャのプロパティ] ウィンドウを使用します。パーミッションを複数のプロシージャに割り当てるには、[ユーザのプロパティ] または [グループのプロパティ] ウィンドウを使用します。
DBA 権限のあるユーザまたはプロシージャの所有者としてデータベースに接続します。
GRANT EXECUTE ON 文を実行します。
次の手順では、プロシージャ my_procedure を実行するパーミッションを M_Haneef に与えることができます。
DBA 権限のあるユーザまたは my_procedure プロシージャの所有者としてデータベースに接続します。
次の SQL 文を入力して実行します。
GRANT EXECUTE ON my_procedure TO M_Haneef; |
プロシージャは所有者のパーミッションのもとで実行されます。テーブルの情報を更新するプロシージャが正しく実行されるのは、そのプロシージャの所有者が対象となるテーブルの UPDATE パーミッションを持っている場合のみです。
プロシージャの所有者が適切なパーミッションを持っていれば、そのプロシージャの EXECUTE パーミッションを割り当てられているユーザは、基本となるテーブルに対するパーミッションの有無にかかわらず、そのプロシージャを実行できます。プロシージャを使用すると、テーブルに対する一般的なパーミッションがなくても、ユーザがテーブルに一定の作業を行う許可を与えることができます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |