2014-09-18 37 views
0

我使用DACPAC作为数据库部署的一部分。相同的软件包被部署到dev/staging/prod环境。我们希望能够做的是为数据库建立一个数据库,例如管理员用户,这些用户在每个环境中具有不同的用户标识符。环境感知的SQL脚本

如果我可以在DACPAC(或其他)的发布配置文件中放置一个变量,那就太好了,但我想我也可以通过查看@@servername来实现此目的。有没有更好的方法来完成这个?

回答

2

因此,如果您在Visual Studio中使用SSDT,这是超级干净的。

转到项目属性,SQLCmd选项卡并输入任何变量。

enter image description here

然后在脚本中使用它们。

enter image description here

在Visual Studio中发布你(如果你指定的任何)得到一个很好的用户界面,使您可以指定变量的值或加载默认值。

enter image description here

发布配置是MSBuild项目的格式只是一个XML文件,所以没有什么疯狂的事情出现。如果您正在自动部署,则可以使用您正在使用的任何dacpac部署工具来指定变量的默认值。我使用SqlPackage,它是SSDT的一部分。从Powershell的Command Line Reference

用法:

& $sqlpackageexe /Action:Publish /SourceFile:$dacpac /Profile:$dacprofile /TargetConnectionString:$connstring /Variables:DbEnvironment=Development