我正在尝试建立一个顺利的部署过程,我们可以使用单个部署脚本部署到生产或开发 SQL 服务器。
但我不知道如何最好地管理两个环境之间的用户和权限。例如,在开发中我们希望开发者团队拥有db_owner
数据库角色。在生产中,我们要么不希望访问,要么只希望datareader
role.
我认为最简单的方法是在每台服务器上设置用户一次,然后不将它们保留在数据库项目中。但随后它们在部署过程中被丢弃。
有什么方法可以使用 Visual Studio 中的项目配置来执行此操作吗?
我们正在使用完整的 Microsoft 堆栈
- Visual Studio 2010数据库项目
- SQL Server 2008
- TFS 版本控制和构建服务器
-
vsdbcmd
用于部署
有几件事可以让这变得更容易:
- 在数据库中创建有意义的角色名称,其中包含角色应具有的权限。例如“开发”或“生产支持”。仅将权限分配给这些角色并将用户分配给这些角色
- 在您的项目中,您可能针对不同的环境有不同的部署配置。由于每个配置可以使用不同的 sqlcmdvars 文件,因此请为您的环境创建一个 SQLCMD 变量并为其添加适当的值(例如,“DEV”用于开发,“PROD”用于生产)
- 创建一个部署后脚本,根据 SQLCMD 变量的值,为正确的环境执行正确的操作。就像是:
--
if ('$(Environment)' = 'DEV')
begin
create user [domain\developers]
exec sp_addrolemember @rolename='db_owner', @membername='domain\developers'
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)