SQL / SSMS只读用户只能查看单个数据库

我目前正在使用SQL Server 2005,其中有个别数据库的个人客户。

我需要为每个客户创build一个只读login,但是我不能让他们看到SSMS中的其他数据库,因为它们包含其他客户公司名称。

我已经运行了以下,它给了我正是我需要的,但是这给了他们db_owner而不是只读。 删除db_owner时,他们不能再在SSMS中看到数据库。

--Step 1: (create a new user) create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF; -- Step 2:(deny view to any database) USE master; GO DENY VIEW ANY DATABASE TO hello; -- step 3 (then authorized the user for that specific database , you have to use the master by doing use master as below) USE master; GO ALTER AUTHORIZATION ON DATABASE::yourDB TO hello; GO 

这可能吗? 如果需要的话,我可以在2005年升级SQL。

它会为你创build一个login用户,并为他们分配一个只读angular色?

 <!-- language: lang-sql --> CREATE USER hello FOR LOGIN hello GO EXEC sp_addrolemember 'db_datareader', 'hello' 

在此之后,它们不应该是db_ownerangular色的成员,除非默认情况下将其设置为将某个新用户添加到db_ownerangular色。 这应该限制为仅针对用户数据库的SELECT。 如果您想将视图限制在特定的表格中,则必须创build一个自定义angular色来限制该访问。