web-dev-qa-db-ja.com

SQL Server Management Studioでのユーザーデータベース権限の付与

SQL Server Management Studioでデータベースを右クリックして[プロパティ]をクリックすると、ウィンドウが開き、データベースに対するユーザーの権限が表示されます。私は最近、自分のデータベースに対するこのユーザーのアクセス許可を付与する目的で、Active Directoryにユーザーを追加しました。問題は、Active Directoryで多くのユーザーが表示されることですが、SQL Server Management Studioでは、これらのユーザーはごくわずかしか表示されません。作成したばかりのユーザーが、search-> browseを押しても、正確な名前を検索しても表示されません。何が悪いのですか? SQL Serverは、Active Directoryに接続してユーザーリストを取得できませんか?さらに、表示されているすべてのユーザーは、ADの1つのグループに属しているようです...

編集

すべての答えに感謝します...

回答と解決策の要約

ユーザーは、特定のデータベースの[プロパティ]-> [権限]-> [ユーザー]リストに表示される前に、メインの[セキュリティ]-> [ログイン]フォルダーに追加する必要があります。ただし、SQL Server自体に対する十分な権限がなかったため、メインのログインフォルダーに移動すると、ユーザーを表示できませんでした(より多くの権限を持つ同僚のためにそこにいても)。しかし、私はDIDにデータベースに対する十分な権限を持っているので、そこにユーザーを表示することができ、混乱を招きました。

5
KyleM

まず、WindowsアカウントをSQL Serverインスタンスに追加する必要があります。データベースではなく、インスタンスのセキュリティフォルダーに移動します。そこに新しいログインとして必要なユーザーを追加します。それらをSQL Serverインスタンスに追加したら、個々のデータベースに対する権限を割り当てることができます。

8
Sean Howat

データベースユーザーまたはSQLログインを参照していますか?データベースユーザーはSQLログインに基づいており、最初に作成する必要があります。 SQLログインを追加するときは、Windows認証またはSQL認証のどちらを使用するかを選択できます。 Windows認証を選択すると、ローカルユーザーまたはグループアカウント、またはドメインユーザーまたはグループアカウントを参照できます。ログインを作成したら、データベースにユーザーを作成するデータベースへのログインアクセスを許可できます。

ユーザーとログインは表示されるだけでなく、作成する必要があります。

5
joeqwerty

基本的にあなたがしなければならないことは、ADuserをSQL Serverログインとして追加し(サーバーに認証されるようにするため)、ログインに関連付けられているデータベース内にユーザーを作成し、このユーザーに操作を行うための権限を与えることです(読み取り) 、書き込み、更新など)をデータベースで実行します(承認)。あなたはこれに沿って何かを使ってこれを理解することができます:

USE [master]
GO
CREATE LOGIN [Domain\User] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE [YourTargetDatabase]
GO
CREATE USER [Domain\User] FOR LOGIN [Domain\User]
GO
USE [YourTargetDatabase]
GO
EXEC sp_addrolemember N'db_datareader', N'Domain\User'
GO
USE [YourTargetDatabase]
GO
EXEC sp_addrolemember N'db_datawriter', N'Domain\User'
GO

別のサーバーで取得されたデータベースがここに復元されるか、関連付けられたユーザーを削除せずにログインが削除されるため、ログインに関連付けられていないユーザーが表示されることがあります。

2
DaniSQL