Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 10498|Ответ: 0

[Источник] SQL Server для запроса прав и ролей объектов пользователя

[Скопировать ссылку]
Опубликовано 28.01.2015 16:33:32 | | |
Запрос разрешений и ролей пользователей объектов в SQL Server[@more@]

-- Запрос прав на объекты пользователя
exec sp_helprotect NULL, 'UserName'
-- Запрос к роли пользователя
exec sp_helpuser 'UserName'
-- Запрос, у каких пользователей есть определённая системная роль
exec sp_helpsrvrolemember 'sysadmin'
-- Вложенные роли можно запросить
С tree_roles как
(
ВЫБЕРИТЕ role_principal_id, member_principal_id
От sys.database_role_members
ГДЕ member_principal_id = USER_ID('Имя пользователя')
СОЮЗ ВСЕХ
ВЫБЕРИТЕ c.role_principal_id,c.member_principal_id
ОТ sys.database_role_members как c
Внутреннее соединение tree_roles
на tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
От tree_roles
-- Базовая таблица, связанная с другими правами
Выбрать * из системных пользователей
Выбрать * из syspermissions
-- Кто имеет доступ к моему экземпляру SQL Server?
ВЫБИРАТЬ
имя как UserName, type_desc как UserType, is_disabled как IsDisabled
ОТ sys.server_principals
где type_desc в ('WINDOWS_LOGIN', 'SQL_LOGIN')
порядок по типу пользователя, названию, IsDisabled
-- Кто имеет доступ к моим базам данных?
ВЫБИРАТЬ
dp.name как имя пользователя, dp.type_desc как UserType, sp.name как LoginName, sp.type_desc как LoginType
С sys.database_principals DP
JOIN sys.server_principals sp ON dp.principal_id = sp.principal_id
Порядок по типу пользователя
Выбрать * из sys.database_principals
-- Серверные роли
выбирать
p.name как UserName, p.type_desc как UserType, pp.name как ServerRoleName, pp.type_desc как ServerRoleType
Из sys.server_role_members ролей
Соединить sys.server_principals p на roles.member_principal_id = p.principal_id
Присоединиться к sys.server_principals PP на roles.role_principal_id = pp.principal_id
где pp.name в ('sysadmin')
порядок по ServerRoleName, UserName
-- Роли базы данных
ВЫБИРАТЬ
p.name как UserName, p.type_desc как UserType, pp.name как DBRoleName, pp.type_desc как DBRoleType, pp.is_fixed_role как IfFixedRole
ИЗ sys.database_role_members ролей
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
ПРИСОЕДИНЯЙТЕСЬ sys.database_principals pp НА roles.role_principal_id = pp.principal_id
где pp.name в ('db_owner', 'db_datawriter')
-- Что могут сделать эти пользователи?
ВЫБИРАТЬ
grantor.name как GrantorName, dp.state_desc как StateDesc, dp.class_desc как ClassDesc, dp.permission_name как PermissionName,
OBJECT_NAME(major_id) как ObjectName, GranteeName = grantee.name
С sys.database_permissions DP
JOIN sys.database_principals grantee на dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id
где permission_name типа '%UPDATE%'






Предыдущий:Конфигурация сервера SQLSERVER
Следующий:comboBox установлен на режим только для чтения (select-only)
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com