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

Откуда: Москва
Сообщений: 180
Разработчикам и пользователям, помимо серверных ролей и ролей внутри баз,
в разное время выдавали некие дополнительные разрешения, используя скрипты:
USE [master]
GRANT VIEW ANY DEFINITION TO [login1]
GO
GRANT ALTER TRACE TO [login1]
GO
GRANT ALTER TRACE TO [login2]
GO
GRANT .....
GO

Теперь возникла задача: навести порядок в правах.

Посмотрел процедуры - и ничего полезного не нашел:
sp_helpuser  'login1'
sp_helprotect  @username = 'login1'

Посмотрел
select * from sys.database_permissions 

- подозреваю можно из нее информацию вытащить,- но как не понимаю.

Вопрос: Как получить полный список всех выданых грантов по пользователю(ям)?
- В какую сторону копать ?
24 май 12, 16:28    [12609554]     Ответить | Цитировать Сообщить модератору
 Re: GRANT - полный список разрешений пользователей и разработчиков.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Молодой
Посмотрел процедуры - и ничего полезного не нашел:
sp_helpuser  'login1'
sp_helprotect  @username = 'login1'

Потому что логин и юзер - это разные вещи


Молодой
Вопрос: Как получить полный список всех выданых грантов по пользователю(ям)?

Так пользователю в базе или логину на сервере ?

Сообщение было отредактировано: 24 май 12, 16:33
24 май 12, 16:32    [12609597]     Ответить | Цитировать Сообщить модератору
 Re: GRANT - полный список разрешений пользователей и разработчиков.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 180
Логин на сервере привязан к юзеру в базе - это понятно.

Я понял, что не совсем понял вот этот момент:

кому выдается GRANT - пользователю или логину, и кто такой principal - ?
24 май 12, 16:52    [12609714]     Ответить | Цитировать Сообщить модератору
 Re: GRANT - полный список разрешений пользователей и разработчиков.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Открываем хелп
sys.database_permissions
Returns a row for every permission or column-exception permission in the database

sys.server_permissions
Returns one row for each server-level permission.


Потом думаем - а что же хотим получить
24 май 12, 17:27    [12609925]     Ответить | Цитировать Сообщить модератору
 Re: GRANT - полный список разрешений пользователей и разработчиков.  [new]
Молодой
Member

Откуда: Москва
Сообщений: 180
Glory, спасибо
Разобрался: проблема была в том, что не знал про sys.server_permissions. Решил всё так:
-- список дополнительных GRANT-DENY на сервере:
SELECT  p.type,p.name,s.permission_name,s.state_desc FROM sys.server_permissions s JOIN
  sys.server_principals p ON p.principal_id = s.grantee_principal_id -- AND p.type IN('S','R','U','...') 
AND s.permission_name NOT IN ('CONNECT SQL','CONNECT','...')
ORDER BY p.name,p.type

-- список дополнительных GRANT-DENY в текущей базе:
SELECT o.*, p.name AS NmUser, b.class_desc,b.permission_name,b.state_desc
FROM sys.database_permissions b  JOIN
  sys.database_principals p ON p.principal_id = b.grantee_principal_id  AND p.name NOT IN ('guest','public')
  JOIN (
 SELECT o.object_id, o.type_desc,s.name NmSchem,o.name NmObject FROM sys.objects O LEFT JOIN 
 sys.schemas  S ON O.schema_id=S.schema_id 
 WHERE o.type_desc IN  (
'INTERNAL_TABLE',
'SQL_INLINE_TABLE_VALUED_FUNCTION',
'SQL_SCALAR_FUNCTION',
'SQL_STORED_PROCEDURE',
'SQL_TABLE_VALUED_FUNCTION',
'SYSTEM_TABLE',
'USER_TABLE',
'VIEW','...')  -- ORDER BY s.name,o.name
  ) O  ON o.object_id=b.major_id
 ORDER BY NmUser,  p.type
25 май 12, 14:00    [12615148]     Ответить | Цитировать Сообщить модератору
 Re: GRANT - полный список разрешений пользователей и разработчиков.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Молодой
-- список дополнительных GRANT-DENY в текущей базе:

Один логин может быть отмаплен в несколько баз
25 май 12, 14:10    [12615230]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить