1

データベース内のすべてのテーブル/プロシージャに選択/更新/挿入/実行権限を付与するにはどうすればよいですか?役割を作成しますか?

ゲスト(一部のテーブルに対するすべてのアクセス許可を選択)、ユーザー(テーブルへのアクセス許可のみを選択、更新、挿入)、および管理者(データベース内のすべてのオブジェクトに対するすべてのアクセス許可)が必要なため

4

2 に答える 2

3

アプローチ 1) 数が多い場合に便利です。ユーザーの。
GRANT SELECT, INSERT, DELETE, UPDATE on SCHEMA::SchemaName to Principal--多くの場合、スキーマの DBO

プリンシパルの場合、1 人のユーザーではなくロールを使用することが非常に望ましいです。少数のユーザーしかいない場合を除き、通常は管理が簡素化されます。

これで、ユーティリティ スキーマが追加された場合、ユーザーはデータにアクセスできなくなりますが、テーブルが SchemaName スキーマに追加された場合、ユーザーは自動的にアクセスできるようになります。

アプローチ 2) 少数のユーザーの場合に役立ちます。データベース内のすべてのテーブルにアクセスする必要がある場合は、ユーザーとロール
を追加します。その短くて簡単です。db_datareaderdb_datawriter

USE [DBName]
GO
EXEC sp_addrolemember N'db_datawriter', N'UserName'
GO
EXEC sp_addrolemember N'db_datareader', N'UserName'

参照 : http://social.msdn.microsoft.com/Forums/en/transactsql/thread/1489337c-56c9-4bb8-9875-3a75be7596be

于 2012-10-06T17:49:56.880 に答える
3

私は役割を作成します。または、具体的には 1 つのロールです。これは、「ゲスト」(パブリック ロール) と管理者 (db_owner ロール) として説明するロールが既に存在するためです。しかし、それを現実にしましょう。

create role [Users];

grant select on tbl_1, tbl2, tbl3 to [public];
grant select, insert, update, delete to [Users];

exec sp_addrolemember @membername = 'yourdomain\Users', @rolename='Users'
exec sp_addrolemember @membername = 'yourdomain\Admins', @rolename='db_owner'
--no need to add people to public; everyone's a member by default
于 2012-10-06T17:50:12.010 に答える