2017-01-25 14 views
-1

ストアドプロシージャに対してユーザー実行を許可できますが、まったく同じストアドプロシージャを入力しても他のクエリを実行できませんか?ストアドプロシージャは1つしか実行できませんが、他のクエリは実行できません。

基本的にここで達成しようとしているのは、ビュー内のすべての行(View1からすべて選択)を表示しないようにすることですが、ストアドプロシージャによって 'where'条件付きの行を1つだけ選択できます。

+0

この質問はStackOverflowのためにオフトピックです。あなたはStackExchanged Database Administratorフォーラムでそれを投稿(または回答を検索)することを検討しましたか? – STLDeveloper

+0

私は本当にそれを話題とは言いません。確かに、DBAフォーラムでこの質問をするのが良い選択でしょうが、それは特にデータベース管理に関するものだからです。 SOは、もっと一般化されています。 – gmiley

+0

@ c00ler以下の回答のいずれか、または両方があなたを助けてくれましたか?もしそうなら、あなたはこの質問を終わらせるための答えとしてupvoteと少なくとも(あるいは少なくとも)受け入れなければなりません。 – gmiley

答えて

0

はい、可能ですが、そのユーザーのすべてのアクセス許可を削除して、ユーザーに1つのプロシージャに対してのみ実行許可を与えることができます。

GRANT EXECUTE ON dbo.ProcedureName TO [UserName]; 

または

GRANT EXECUTE ON OBJECT::dbo.ProcedureName TO [UserName]; 
0

特定のユーザーがアクセスできるデータのみに制限されているそのユーザーのビューを作成しないでください。単にデータの行にアクセスするためのストアドプロシージャを持つ必要はありません。

限定ビューを使用すると、ユーザーはそのビューレコードをクエリにJOINとして組み込むか、独自のストアドプロシージャ/関数を適切に記述するかを選択できます。ビューは、あなたが試みていることを行うためのより柔軟な方法です。

関連する問題