SQL Server 2012インスタンスに「読み取り」ユーザーを設定したいのですが。すべてのテーブルとビューからデータを取得するストアドプロシージャ、関数、またはダイレクトSQLステートメントを実行する権利を許可しますが、更新または挿入(つまり、何も読み取らず、何も書き込まない)は許可しません。
名前で各関数またはストアドプロシージャに特別な権限を付与せずにこれを設定できますが、テーブルを変更する権限を取り除いて、関数またはストアドプロシージャの実行権を彼に付与できますか?
代わりにSQL Server 2008を実行すると何が変わりますか?
説明と追加:
- ストアドプロシージャがデータを変更した場合、ユーザーはエラーメッセージを受け取ります(変更を拒否するか、ストアドプロシージャへのアクセスを完全に拒否します)。
- 潜在的なソリューションにアクセス許可の拒否が含まれている場合、拒否する代わりに特定のアクセス許可を付与することはできませんか?
- データベース内のすべてのテーブル、ビューなど(現在および将来存在する)に1つのステートメントで拒否を適用できますか?
GRANT
には、アクセス許可の付与、DENY
アクセス許可の拒否 REVOKE
、GRANT
またはの削除の3 つがありDENY
ます。GRANT
またはDENY
ユーザーがアクセス許可を継承できない場合は、たとえば、ストアドプロシージャへのアクセス権を取得します。
DENY DELETE, INSERT, UPDATE
データベースまたはスキーマを使用している場合は、テーブルとビューにのみ影響があると思います。