У меня есть определенная пользователем роль OrderEntry в моей базе данных, которая имеет только два члена. Отбрасывая их индивидуально, чтобы, в свою очередь, отказаться от роли, это не большая проблема. Однако я вижу, что это проблема, если возникла ситуация, когда вам нужно было отбросить роль, и сначала нужно удалить всех участников из этой роли. Есть ли простой способ сделать это для дальнейшего использования. Я имею в виду с точки зрения SQL скриптЕсть ли простой способ удалить всех участников из роли
ответ
select 'ALTER ROLE ' + QUOTENAME(rp.name) + ' DROP MEMBER ' + QUOTENAME(mp.name)
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)
WHERE rp.name = 'OrderEntery '
order by rp.name
вы можете создать все ALTER РОЛЬ DROP УЧАСТНИКА Синтаксис как это. Возьмите запрос результата и запустите его.
Результат должен выглядеть следующим образом
ALTER ROLE [OrderEntery ] DROP MEMBER [user1]
ALTER ROLE [OrderEntery ] DROP MEMBER [user2]
ALTER ROLE [OrderEntery ] DROP MEMBER [user3]
ALTER ROLE [OrderEntery ] DROP MEMBER [user4]
Edit:
Из MSDN:
- https://msdn.microsoft.com/en-us/library/ms189780.aspx sys.database_role_members - возвращает одну строку для каждого члена каждой роли базы данных.
- https://msdn.microsoft.com/en-us/library/ms187328.aspx sys.database_principals - возвращает строку для каждого принципала безопасности в базе данных SQL Server.
Это немного над моей головой на данный момент. Я займу некоторое время, чтобы разгадать его. – secretTina
Это не так сложно, в основном с запросом, вы получаете всех пользователей от определенной роли (используя предложение where). Затем вы добавляете текст для создания синтаксиса 'alter role ... drop member ...', чтобы вы получали ALTER DROP для каждого члена той роли, которую вы хотите. – CiucaS
Несомненно ... Я просто не знаю, что происходит с sys.database_role_members .... Я новичок – secretTina
Ваш вопрос путается, вы хотите удалить строки этой роли? или вы хотите удалить роль этих пользователей? –
Из того, что я понимаю о том, чтобы отбросить роль, вам не нужно иметь членов в этой роли. Путем того, чтобы удалить члена в моей ситуации, будет ALTER ROLE OrderEntery DROP MEMBER JohnDoe. Затем, когда член сброшен, я могу отбросить роль DROP ROLE OrderEntery. Если в этой роли есть члены multipe, и я хочу удалить их, есть простой способ удалить их все или все они должны быть удалены отдельно? – secretTina
Вы хотите удалить членов той же роли? я прав? –