У меня есть база данных с большим количеством пользователей в нем. Те пользователи принадлежат различным встроенным ролям в DB (например, db_ddladmin).
Я хочу генерировать сценарий, который создает тех тех же пользователей с теми же ролевыми присвоениями для использования в другой базе данных. Studio управления SQL, кажется, только генерирует призывы sp_addrolemember к пользовательским ролям, не сборке - в. Там какой-либо путь состоит в том, чтобы сделать это сценарием все роли?
Возможно, существуют кто-либо другой, лучший инструмент для генерации сценариев базы данных от существующей базы данных (предпочтительно, но не обязательно, свободны)?
Информация о пользователях базы данных и ролях, которые им назначены, доступна в системных представлениях sys.database_principals и sys.database_role_members. Просмотрите эти данные с помощью следующих запросов:
select * from sys.database_principals
select * from sys.database_role_members
Предположим, что у вас есть пользователи и роли базы данных, настроенные в базе данных A, и вы хотите скопировать их в базу данных B. Чтобы создать пользователей в целевой базе данных:
.
SELECT 'CREATE USER [' + name + '] for login [' + name + ']'
from sys.database_principals
where Type = 'U'
and name <> 'dbo'
Чтобы настроить новых пользователей в базе данных B с теми же ролями, которые они имеют в базе данных A:
.
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. Если у вас есть определенные пользователем роли, вам нужно будет сначала создать их заново. (Роли и назначенные им разрешения очень неограниченны, и я не хочу оказаться в ситуации, когда мне придется это делать!)
.Вот один вариант от Idera: http://www.idera.com/Products/Free-Tools/SQL-permissions/ Он генерирует логины и разрешения и может помочь вам выполнить то, что вы пытаетесь сделать.