2017-05-17 9 views
0

ここでは、Permissions for truncating a tableを読んで、テーブルを切り捨てるためにユーザーにALTERパーミッションを付与する必要があります。しかし、私はまだこの役割が付与されているユーザーがテーブルを切り捨てる問題があります。テーブルをALTERパーミッションで切り捨てる問題

enter image description here

enter image description here

これがなぜ任意のアイデア?

PS。私はテーブルの所有者として、自分で切り捨てることができます。 ALTER権限を持つ人は誰もいません。

+1

あなたがここで答えを見つけることができますお使いのシステムのセキュリティを強化するために切り捨てられるしますhttps://dba.stackexchange.com/questions/52828/what-permissions-are-for-truncating-a-table – Leila

答えて

2

あなたが参照しているリンクは、MS SQL Serverに適用されます。 LeilaによるコメントのリンクもSQL Server用です。

ユーザーの場合must haveDROP ANY TABLEシステム権限。

これは、このシステム権限があまりにも破壊的であるため、あなたが望むものではない可能性があります。

トム・カイトhas発生した問題の解決策:

確かに、これは、ストアドプロシージャがすべてに約あるものです。選択的に特定のテーブルを切り捨てるabilitly誰かを与えること

、 またはいくつかのスキーマが所有する表のすべて、あなたがコーディングします。

create or replace procedure do_the_truncate as begin execute immediate 
'truncate table T'; end; 

か(いくつかのスキーマが所有する表のいずれか、またはそのスキーマは ドロップに任意のテーブルprivの任意のテーブルを持っている場合)

create or replace procedure do_the_truncate(p_tname in varchar2) as 
begin execute immediate 'truncate table ' || p_tname; end; 

して、ちょうどそのコマンドを実行する を必要とするすべてのユーザーに対してその手続き上で実行付与します。ストアドプロシージャは、プロシージャのOWNERの基本プライベート で実行されるため、 のような強力な権限は必要ありません。そのテーブルを切り捨てるには、「任意のテーブルを削除してください。

あなたは、さらに許可テーブルのリストを持っているdo_the_truncateストアドプロシージャを高めることができるが

関連する問題