Я создал базу данных в SQL Server 2008 R2 и использую Visual Studio 2010 Ultimate для создания проекта базы данных для нее.
Я создал проект SQL Server и проект Database для представления моей среды на основе этого
Я создал базу данных в SQL Server 2008 R2 и использую Visual Studio 2010 Ultimate для создания проекта базы данных для нее.
Я создал проект SQL Server и проект Database для представления моей среды на основе этого
Раньше нам приходилось с этим возиться, и в итоге мы использовали идею Джейми Томпсона о создании сценариев после развертывания для обработки разрешений на основе переменной, содержащей имя среды/конфигурации. Вы можете найти (в архиве) статью здесь: https://web.archive.org/web/20190222004817/http://sqlblog.com/blogs/jamie_thomson/archive/2010/07/21/a-strategy-for-managing-security-for-different-environments-using-the-database-development-tools-in-visual-studio-2010.aspx
Примечание: ссылка Джейми, очевидно, мертва. Я написал кое-что основанное на этом здесь: http://schottsql.com/2013/05/14/ssdt-setting-different-permissions-per-environment/
Я также написал скрипт для обработки сценариев разрешений:
SELECT
state_desc + ' ' + permission_name +
' on ['+ ss.name + '].[' + so.name + ']
to [' + sdpr.name + ']'
COLLATE LATIN1_General_CI_AS as [Permissions T-SQL]
FROM SYS.DATABASE_PERMISSIONS AS sdp
JOIN sys.objects AS so
ON sdp.major_id = so.OBJECT_ID
JOIN SYS.SCHEMAS AS ss
ON so.SCHEMA_ID = ss.SCHEMA_ID
JOIN SYS.DATABASE_PRINCIPALS AS sdpr
ON sdp.grantee_principal_id = sdpr.principal_id
UNION
SELECT
state_desc + ' ' + permission_name +
' on Schema::['+ ss.name + ']
to [' + sdpr.name + ']'
COLLATE LATIN1_General_CI_AS as [Permissions T-SQL]
FROM SYS.DATABASE_PERMISSIONS AS sdp
JOIN SYS.SCHEMAS AS ss
ON sdp.major_id = ss.SCHEMA_ID
AND sdp.class_desc = 'Schema'
JOIN SYS.DATABASE_PRINCIPALS AS sdpr
ON sdp.grantee_principal_id = sdpr.principal_id
order by [Permissions T-SQL]
GO
Вместе я установил разрешения для сценариев и папок после развертывания, которые воссоздают пользователей/роли/разрешения в зависимости от среды. Мы вызываем сценарий "оболочки" из основного раздела после развертывания, который проходит через остальную часть, чтобы выяснить, какой раздел запустить.