Po hodinách pokusu zjistit, jak vytvořit uživatelský účet, který má přístup pouze k 1 DB a může vidět pouze tuto DB. Myslím, že jsem na to přišel!!!!
-
Vytvořte uživatelský účet (ujistěte se, že není namapován na žádnou databázi, jinak se zobrazí poslední chybová zpráva 15110, úroveň 16, stav 1 a poznamenejte si navrhované řešení )
USE [master] GO CREATE LOGIN [us4] WITH PASSWORD=N'123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
-
Klepněte pravým tlačítkem myši na horní část SQL (Název SQLSERVER)>
Properties
>Permissions
>Klikněte nauser account
a vyberteDeny
pro zobrazení databází.use [master] GO DENY VIEW ANY DATABASE TO [us4]
-
Klikněte pravým tlačítkem na nově vytvořenou DB, Vlastnosti, Soubory a změňte vlastníka na nově vytvořený účet. (důležitá poznámka :
ALTER ROLE [db_owner] ADD MEMBER [us4]
nefunguje )USE [dbname] GO EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
V tomto okamžiku, jakmile se uživatel přihlásí, uvidí Master, tempdb a také novou DB, které je vlastníkem DB. Možná budete chtít přejít na Tools>Option
a povolil možnost skrýt systémové objekty, abyste nezobrazovali master, tempdb atd. Možná budete také potřebovat SP1, pokud tato možnost nefunguje
Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.
navrhované řešení pro Msg 15110: Chcete-li vyřešit výše uvedenou chybu, jednoduše odstraňte uživatele z uzlu zabezpečení databáze a zkuste to znovu
Doufám, že to pomůže...
Nikhil