Информация о пользователях базы данных и назначенных им ролях доступна в системных представлениях.
sys.database_principals и sys.database_role_members. Просмотрите эти данные по следующим запросам:
select * from sys.database_principals
select * from sys.database_role_members
Я предполагаю, что у вас есть пользователи базы данных и роли, настроенные в базе данных A, и вы хотите, чтобы они были скопированы в базу данных B. Чтобы создать пользователей в целевой базе данных:
- Выполнить следующий запрос в базе данных A
- Вырезать, вставить, ОБЗОР и запустить полученный скрипт в базе данных B
.
SELECT 'CREATE USER [' + name + '] for login [' + name + ']'
from sys.database_principals
where Type = 'U'
and name <> 'dbo'
Чтобы настроить новых пользователей в B с теми же ролями, что и в A:
- Выполнить следующий запрос в базе данных A
- Вырезать, вставить, просмотреть и запустить полученный скрипт в базе данных B
.
SELECT 'EXECUTE sp_addrolemember ''' + roles.name + ''', ''' + users.name + ''''
from sys.database_principals users
inner join sys.database_role_members link
on link.member_principal_id = users.principal_id
inner join sys.database_principals roles
on roles.principal_id = link.role_principal_id
Всегда просматривайте эти сценарии. Могут быть исключения или особые случаи, и вы просто не хотите испортить безопасность.
Если новая база данных находится на другом экземпляре SQL Server, вам сначала нужно будет создать логины SQL. Если у вас есть определенные пользователем роли,
вам нужно будет воссоздать их в первую очередь. (Роли и назначенные им права доступа очень открыты, и я никогда не хочу оказаться в ситуации, когда мне нужно будет это сделать!)