まず、用語を確認します。ログインはインスタンスレベルのセキュリティプリンシパル(sys.server_principals
)であり、ユーザーはデータベースレベルのセキュリティプリンシパル(sys.database_principals
)です。それらは、SID(セキュリティ識別子)によって結合されます。上記のシステムビューを見ると、SIDによって1:1形式で結合されていることがわかります。これは、データベースで1人のユーザーに1回ログインすることです。ログインは複数のユーザーを持つことができますが、それらは異なるデータベースにある必要があります。
したがって、アクセスしたいログインごとに、データベースにユーザーを作成する必要があります。これは十分に単純なコマンドです。
CREATE USER [UserName] FROM LOGIN [LoginName]
そこから、すべてのユーザーを1つ(または複数)の役割に割り当てることができます。ロールは、権限を持ち、それらの権限を各ユーザー(データベースロールの場合)またはログイン(たとえばロール)と共有するコンテナです。と呼ばれる組み込みのデータベースロールがあり、データベース内のdb_datareader
すべてのテーブルとビューへの読み取りアクセスを提供します。すべてのユーザーをそのロールに追加できます。ただし、新しい役割を作成してそれを役割に追加することをお勧めしますdb_datareader
。次に、すべてのユーザーを新しいロールに追加します。ここでの利点は、グループに追加のアクセス許可を追加する場合は、ロールのアクセス許可を変更するだけで実行できることです。
次の方法で役割を作成します。
CREATE ROLE RoleName
ユーザーを役割(または1つの役割を別の役割)に追加する
EXEC sp_addrolemember 'RoleName','UserName'
または、2012年以降の場合
ALTER ROLE [RoleName] ADD MEMBER [UserName]