如何处理用户和登录在Visual Studio数据库项目?(How to handle users

2019-09-02 04:39发布

我已经建立在SQL Server 2008 R2数据库,并正在使用Visual Studio 2010旗舰版为它创建一个数据库项目。

我创建了两个SQL Server项目和数据库项目在此基础上,以表示我的环境MSDN演练 。 这两个项目的架构比较按预期工作,我能够复制所有更改服务器项目。

然而,它似乎已经进口了一些环境特定的配置,如登录,用户/登录映射,本地服务帐户(如NT SERVICE \ MSSQL $ SQLEXPRESS2008)等,这似乎并不理想,因为我的印象是这样的数据库项目可以部署到另一台服务器和这些环境的具体细节可能会有所不同。 例如,命名实例可能是开发,QA和PROD之间的不同。 用户可以映射到不同的登录信息。

我是否正确做这个或者我应该采取额外的步骤,以使数据库项目移植到所有的环境?

我的目标是利用这个项目

  1. 在版本控制Capture模式
  2. 部署模式的变化,如通过产生变化的脚本
  3. 绑定到单元测试,以动态创建一个一次性的测试环境。

Answer 1:

我们以前也惹这一点,并最终使用创建部署后脚本来处理基于包含环境/配置的名称的变量权限的杰米·汤普森的想法。 你可以在这里找到相应的文章: http://sqlblog.com/blogs/jamie_thomson/archive/2010/07/21/a-strategy-for-managing-security-for-different-environments-using-the-database-development -tools功能于视觉工作室2010.aspx

我还写了一个脚本来处理权限的脚本:

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

总之,我设置的权限为部署后脚本和文件夹将重新创建基于对环境的用户/角色/权限。 我们把从主部署后部分,通过休息去弄清楚要运行的部分“包装”的脚本。



文章来源: How to handle users and logins in Visual Studio Database Project?