Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Nigg
Member

Откуда:
Сообщений: 29
Добрый день!
Платформа: MSSQL2008 R2

Существует необходимость на одном сервере ограничить вход пользователей в некую базу, для этого нужно снять "Галки" или поставить с требуемой базы с логина на сервере в разделе User Mapping.
В общем руками это делать как-то не круто, т.к. логинов много, поэтому есть необходимость написать некую процедуру, в которую передавать параметры
- Имя базы
- Режим (1 - примапить, 2 - отмапить )

Погуглив нашел, как это сделать через некий код
Примапить пользователя к базе

USE @Database
GO
CREATE USER [@UserLog] FOR LOGIN [@UserLog]
GO


Отмапить:

USE [@Database]
GO

DROP USER [@UserLog]
GO



Проблема в том, что в данных инструкциях видимо нельзя использовать переменные, хотел сделать перебор через курсор или цикл.
Коллеги, подскажите, пожалуйста, можно ли данную задачу решить как-то еще?
3 сен 13, 10:37    [14788035]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
создать роль и включить пользоватей в нее - давать права через роль, в итоге 1 действие без переменых
3 сен 13, 10:40    [14788056]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Nigg
Member

Откуда:
Сообщений: 29
Дело в том, что пользователи ходят на базу через некое клиентское приложение и сидят в группе public, также есть еще пользователи, у которых есть доступ на все базы, и они тоже в группе public, поэтому отрубать всем эти права - не вариант.
3 сен 13, 11:08    [14788225]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Nigg,

вы сами ответили на свой вопрос - создавайте 2 группы и вынимайте всех из паблика
3 сен 13, 11:09    [14788232]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Nigg
Member

Откуда:
Сообщений: 29
Список юзеров тоже переменный, поэтому вторая группа будет меняться и их придется тоже перекидывать руками. Предложенный мой вариант был бы идеальным, но как так сделать?
3 сен 13, 11:27    [14788358]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Nigg
Список юзеров тоже переменный, поэтому вторая группа будет меняться и их придется тоже перекидывать руками.

Во встроенную роль public попадают все пользователи базы. Независимо от вашего желания.
И остаются там тоже независимо от вашего желания
Так что пользовательская роль - именно то, что лучше всего подходит.

Nigg
Предложенный мой вариант был бы идеальным, но как так сделать?

Использовать динамический запрос
3 сен 13, 11:35    [14788422]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Nigg
Member

Откуда:
Сообщений: 29
Glory, не совсем понимаю, что значит использовать динамический запрос, можно пример?
3 сен 13, 11:48    [14788511]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
хелп - EXECUTE
3 сен 13, 11:52    [14788536]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
Nigg
Member

Откуда:
Сообщений: 29
Glory, все понял, спасибо!
3 сен 13, 12:04    [14788608]     Ответить | Цитировать Сообщить модератору
 Re: Процедура отмапливания\примапливания пользователей от конкретной базы  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Добавлять или исключать пользователей из предопределенных ролей db_denydatareader и db_denydatawriter.
3 сен 13, 12:27    [14788737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить