След часове опити да разберете как да създадете потребителски акаунт, който има достъп само до 1 DB и може да вижда само тази DB. Мисля, че разбрах!!!!
-
Създайте потребителски акаунт (уверете се, че не е съпоставен с никоя база данни, в противен случай ще получите последното съобщение за грешка 15110, ниво 16, състояние 1 и отбележете предложеното решение )
USE [master] GO CREATE LOGIN [us4] WITH PASSWORD=N'123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
-
Щракнете с десния бутон върху горната секция на SQL (име на SQLSERVER)>
Properties
>Permissions
>Щракнете върхуuser account
и изберетеDeny
за преглед на бази данни.use [master] GO DENY VIEW ANY DATABASE TO [us4]
-
Щракнете с десния бутон върху новосъздадената DB, Properties, Files и променете собственика на новосъздадения акаунт. (важна бележка :
ALTER ROLE [db_owner] ADD MEMBER [us4]
не работи )USE [dbname] GO EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
В този момент, след като потребителят влезе, той ще види Master, tempdb и също ще види новата DB, на която той е собственик на DB. Може да искате да отидете на Tools>Option
и активира опцията за скриване на системни обекти, така че да не показвате master,tempdb и т.н. Може да се нуждаете и от SP1, ако тази опция не работи
Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.
предложено решение за Msg 15110: за да разрешите горната грешка, просто изтрийте потребителя от възела за сигурност на базата данни и опитайте отново
Надявам се това да помогне...
Никил