以前にこれをいじる必要があり、環境/構成の名前を含む変数に基づいてアクセス許可を処理するために、デプロイ後のスクリプトを作成するという Jamie Thompson のアイデアを使用することになりました。(アーカイブされた) 記事はこちらにあります
。 Visual Studio 2010.aspx でデータベース開発ツールを使用して、さまざまな環境のセキュリティを管理する
注: Jamie のリンクは明らかに死んでいます。ここに基づいて何かを書きました:
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
一緒に、環境に基づいてユーザー/ロール/権限を再作成するデプロイ後のスクリプトとフォルダーに権限を設定します。メインのデプロイ後のセクションから「ラッパー」スクリプトを呼び出し、残りの部分を通過して実行するセクションを決定します。