8

SQLサーバーにいくつかのデータベースがあります。データベース 'c' を表示できるが、残りのデータベースを表示できない 1 人の新しいユーザーを作成したいと考えています。

このユーザーは、このデータベースからのみ選択できる必要があり、それ以外は何も選択できません。
私はしばらくグーグルで検索してきましたが、最も近いのは、データベースの表示を拒否し、データベースの所有者にすることでした。

しかし、データベース所有者の選択以外のすべてを拒否できる方法がない限り、選択を制限するためにはうまくいかないと思いますか?

助けてくれてありがとう!

編集:ところで、SQL Server 2008 R2。

Edit2: 申し訳ありませんが、元の投稿では明確ではありませんでした。彼らがログインしたときに、アクセスできないだけでなく、他のデータベースの名前も表示されないようにしようとしています。

ありがとう。

4

4 に答える 4

6

1) サーバーにユーザーを作成する

2)指定されたデータベースにユーザーを追加します

3) データベースへの読み取り専用アクセスを許可する

USE [master]
CREATE LOGIN [SomeUserName] WITH PASSWORD=N'someStr0ngP@ssword', DEFAULT_DATABASE=[c], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO

USE [c]
CREATE USER [SomeUserName] FOR LOGIN [SomeUserName] WITH DEFAULT_SCHEMA=[dbo]
GO

EXEC sp_addrolemember N'db_datareader', N'SomeUserName'
于 2012-04-18T22:27:17.170 に答える
2

ステップ-1: ログインを作成する

ステップ 2: ログインからすべての DB ビュー権限を削除します

deny view any database to LogInName

Step-3: データベースのログイン権限を与える

alter authorization on database:: DataBaseName to LogInName

注: ユーザー名またはデータベース名を単一引用符で囲んで指定する必要はありません

于 2014-06-24T13:37:04.853 に答える
2

許可に関しては拒否がデフォルトの動作であるため、ユーザーを作成して必要なデータベースの db_datareader ロールに追加すると、それが唯一の許可になります。他のデータベースにはアクセスできません

編集:

use [master]
GO
DENY VIEW ANY DATABASE TO [login]
GO
use [master]
GO
DENY VIEW SERVER STATE TO [login]
GO

これにより、データベースを表示するログインの機能が削除されます。次に、彼に見てもらいたいものに行き、そのDBの所有者にします

于 2012-04-18T22:33:49.960 に答える