6

SQL Server 2008 Express Editionを使用しています。データベースロールにスキーマの実行権限を与える方法を教えてください。私は間違って何をしていますか?

ログイン、ユーザー、役割、およびスキーマを作成しました。 ユーザーをログインにマップし、そのユーザーにロールを割り当てました。

スキーマには多数のテーブルとストアドプロシージャが含まれています。

ロールには、スキーマ全体に対して実行権限が必要です。

私は、管理スタジオから実行権限を許可し、クエリウィンドウでコマンドを入力することを試みました。

GRANT EXEC ON SCHEMA::schema_name TO role_name 

しかし、私は(私が作成したログインなど)SQL管理スタジオを使用してデータベースに接続すると、まず、私は、ストアドプロシージャを参照することはできませんが、もっと重要なのは、私はそれらを実行しようとすると、エラーを拒否された権限を取得します。

問題のストアドプロシージャは、同じschma内のテーブルから選択データを除いて何もしません。

私はラインでとせずにストアドプロシージャを作成しようとした:

WITH EXECUTE AS OWNER 

これは、任意の違いはありません。

私は自分のスキーマを作成するときにエラーが発生したか、どこかに所有権の問題があると思うが、何か作業をするのは本当に苦労している。

私はストアドプロシージャを実行するのに成功した唯一の方法は、ロールへの制御権限と実行権限を付与することですが、これが正しい、安全な方法であるとは思いません。

本当にありがとうございます。

ありがとうございました。

+0

Sproc用に作成したユーザーに実行権限を与えましたか? –

答えて

4

あなたのケースで私が見ることができるいくつかの問題があります。

まず、Management Studioのオブジェクトを見るためには、View Definitionが必要です。

あなたは役割がすべての権限を持つようにしたい場合、私は

GRANT EXECUTE, SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION 
    ON Schema::SchemaName TO [RoleName/LoginName] 

。また、ユーザー定義のスキーマの所有者は「DBO」であることを確認し、これをお勧めします。

+1

[someUser]への任意の定義を表示する [someUser]へのGRANT VIEW SERVER状態/ *これは "読み取り専用"のすべてを与える2つのその他のアクセス許可です* / – granadaCoder

関連する問題