Po wielu godzinach prób wymyślenia, jak utworzyć konto użytkownika, które ma dostęp tylko do 1 DB i widzi tylko tę DB. Myślę, że to rozgryzłem!!!!
-
Utwórz konto użytkownika (upewnij się, że nie jest ono zmapowane do żadnej bazy danych, w przeciwnym razie otrzymasz komunikat o błędzie końcowym 15110, poziom 16, stan 1 i zanotuj proponowane rozwiązanie )
USE [master] GO CREATE LOGIN [us4] WITH PASSWORD=N'123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
-
Kliknij prawym przyciskiem myszy w górnej części SQL (nazwa serwera SQL)>
Properties
>Permissions
>Kliknijuser account
i wybierzDeny
do przeglądania baz danych.use [master] GO DENY VIEW ANY DATABASE TO [us4]
-
Kliknij prawym przyciskiem myszy nowo utworzoną bazę danych, Właściwości, Pliki i zmień właściciela na nowo utworzone konto.(ważna uwaga :
ALTER ROLE [db_owner] ADD MEMBER [us4]
nie działa )USE [dbname] GO EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
W tym momencie, gdy użytkownik się zaloguje, zobaczy Master,tempdb, a także nową bazę danych, której jest właścicielem. Możesz przejść do Tools>Option
i włączono opcję ukrywania obiektów systemowych, aby nie pokazywać wzorca, tempdb itp. Możesz również potrzebować dodatku SP1, jeśli ta opcja nie działa
Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.
proponowane rozwiązanie dla Msg 15110: aby rozwiązać powyższy błąd, po prostu usuń użytkownika z węzła bezpieczeństwa bazy danych i spróbuj ponownie
Mam nadzieję, że to pomoże...
Nikhil