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

Откуда: Тернопіль, Україна
Сообщений: 2102
Добрый день.

подскажите пожалуйста как?
нужно убрать в роли БД все права
возможно наработки есть, поделитесь пожалуйста

Спасибо!
19 апр 13, 19:51    [14206384]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Удалить роль и создать заново.
19 апр 13, 20:02    [14206417]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
invm
Удалить роль и создать заново.


но в этом случаи все юзери которые привязаны к ней, придется перевязивать их заново?

эм.... както это через ...опу...
19 апр 13, 20:07    [14206427]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Сформировать скрипт добавления мемберов в роль по sys.database_role_members гораздо проще, чем скрипт удаления разрешений у роли по sys.database_permissions.
19 апр 13, 20:26    [14206461]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
invm
Сформировать скрипт добавления мемберов в роль по sys.database_role_members гораздо проще, чем скрипт удаления разрешений у роли по sys.database_permissions.
Только еще не забыть, что роль может быть членом других ролей и наследовать их гранты. Хотя, если это тоже нужно вычистить, то можно и забыть.
19 апр 13, 22:06    [14206643]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
Ennor Tiegael
Только еще не забыть, что роль может быть членом других ролей и наследовать их гранты.
Ну так такие гранты уберутся с прекращением членства в этих других ролях. Что и произойдет автоматом при удалении роли.
19 апр 13, 23:18    [14206790]     Ответить | Цитировать Сообщить модератору
 Re: убрать все права роли БД  [new]
MMM_Corp
Member

Откуда: Тернопіль, Україна
Сообщений: 2102
мать чесная.....

ну тогда давайте попитаемся всетаки норм. написать скрипт для удаления всех прав у роли... для начала нужно их перечислить? погуглил, нарыл скрипт:

WITH
    perms_cte AS
(SELECT 
	USER_NAME(p.grantee_principal_id) AS principal_name,
    dp.principal_id,
    dp.type_desc AS principal_type_desc,
    p.class_desc,
	OBJECT_NAME(p.major_id)  AS OBJECT_NAME,
	p.permission_name,
	p.state_desc AS permission_state_desc
 FROM   sys.database_permissions p
	INNER   JOIN sys.database_principals dp
ON  p.grantee_principal_id = dp.principal_id)


--users
SELECT
	p.principal_name,
	p.principal_type_desc,
	p.class_desc,
    p.[object_name],
    p.permission_name,
    p.permission_state_desc,
	CAST(NULL AS SYSNAME)  AS role_name
FROM
   perms_cte p
WHERE
  principal_type_desc <> 'DATABASE_ROLE'
UNION
--role members


SELECT rm.member_principal_name,
       rm.principal_type_desc,
       p.class_desc,
       p.object_name,
       p.permission_name,
       p.permission_state_desc,
       rm.role_name
FROM
   perms_cte p
	RIGHT OUTER JOIN(
 SELECT 
	role_principal_id,
	dp.type_desc AS principal_type_desc,
	member_principal_id,
	USER_NAME(member_principal_id) AS member_principal_name,
	USER_NAME(role_principal_id) AS role_name--,*
 FROM   sys.database_role_members rm
	INNER   JOIN sys.database_principals dp
	ON  rm.member_principal_id = dp.principal_id) rm         
ON  rm.role_principal_id = p.principal_id
ORDER BY 1


http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/678c5758-7272-48da-9c7d-50b4b49c9615/
Скопирован правильно(с)

такс.... а теперь надо бы права поотдибрать
20 апр 13, 13:22    [14207424]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить