Restrict SQL Server Login access to only one database with permisions

handmadeFromRu
Дата: 14.05.2015 12:11:20
подскажите коллеги как сделать следующее: сделать пользователя который видит только 1 бд и имеет права только на эту бд.
на просторах интернета нашел вот такое
--Step 1: (create a new user)
create LOGIN newLogin WITH PASSWORD='foo', CHECK_POLICY = OFF;


-- Step 2:(deny view to any database)
USE master;
GO
DENY VIEW ANY DATABASE TO newLogin ; 


 -- 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 newLogin ;
GO 

а потом делаю
use yourDB 
CREATE USER newUser FOR LOGIN newLogin 
EXEC sp_addrolemember N'db_owner', N'newUser '

но получаю вот такое в ответ : Сообщение 15063, уровень 16, состояние 1, строка 2
The login already has an account under a different user name.
подскажи что не так или ссылочку дайте куда посмотреть. Заранее благодарен.
Владислав Колосов
Дата: 14.05.2015 12:17:56
handmadeFromRu,
логин нельзя дважды отобразить на базу.
o-o
Дата: 14.05.2015 12:18:24
handmadeFromRu,
ну так когда вы его сделали овнером(owner) базы, он уже db_owner,
ну т.е. уже отмапился в dbo, не надо больше ничего делать
daw
Дата: 14.05.2015 12:18:37
handmadeFromRu,

ALTER AUTHORIZATION ON DATABASE::yourDB TO newLogin ;

это не предоставление доступа логину newLogin к бд. это смена владельца бд на newLogin.
а для владельца никакой дополнительный пользователь в бд не нужен - он и так там есть - dbo (о чем ошибка и говорит).
handmadeFromRu
Дата: 14.05.2015 12:27:39
Спасибо большое. я думал что логин - для доступа на сервак, а юзер для доступа к бд и изза этого такой огород городил. Т.е. именно вот так делают то, что мне нужно?
Glory
Дата: 14.05.2015 12:29:41
handmadeFromRu
Спасибо большое. я думал что логин - для доступа на сервак, а юзер для доступа к бд и изза этого такой огород городил.

Вы правильно думаете. Вы и назначили логин newLogin пользователем dbo. Просто это встроенный пользователь базы
o-o
Дата: 14.05.2015 12:30:09
handmadeFromRu
я думал что логин - для доступа на сервак, а юзер для доступа к бд

так и есть.
прочтите еще раз ответы.
когда вы заделали кого-то овнером базы,
вы его УЖЕ отмапили в dbo.
нельзя мапить второй раз, юзер для вашего логина уже создан, это dbo
handmadeFromRu
Дата: 14.05.2015 12:33:27
спасибо еще раз за разжевывание.
invm
Дата: 14.05.2015 12:57:25
Теперь осталось только выяснить, не натворит ли данный пользователь дел, обладая полномочиями dbo.
handmadeFromRu
Дата: 14.05.2015 13:10:23
invm,
конкретно в моей задачи, в рамках указанной бд он может делать что угодно. главное чтоб чужие не видел и не мог потрогать их