数据库项目SQLCMD -v

时间:2015-02-03 13:45:06

标签: sql-server visual-studio database-project

要控制数据库版本,我使用Visual Studio数据库项目,但要执行项目生成的脚本,我使用sqlcmd.exe。

我的script.postdeployment.sql中有一个名为$(environment)的变量,它取决于服务器环境(prd,uat,dev),我使用命令sqlcmd.exe -v environment="dev"将此值设置为此变量。问题是Visual Studio抛出了编译错误

  

SQL72008:未定义变量环境。

好的,我知道为什么会出现这个错误,这是因为该变量未在Prject属性中定义(SQLCMD变量选项卡),但是如果我在项目属性中添加此变量,则将在脚本覆盖中设置该值我在sqlcmd.exe -v环境中传递的值=" dev"。

例如

,如果我在项目属性中将$(environment)变量设置为" uat"并执行sqlcmd.exe -v environment =" dev",最高优先级是我在项目属性中设置的值,所以UAT,因为项目在我的脚本中生成以下语句:

:setvar app_environment "uat"

我如何处理visual studio数据库项目和sqlcmd.exe之间的这个问题?

1 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是设置部署后脚本的属性,如下所示:

构建动作:无

复制到输出目录:始终复制

执行此操作时,Visual Studio不会构建后脚本文件,但会将其复制到/ bin文件夹。然后,您可以两次调用SQLCMD。一次用于数据库创建脚本,然后第二次用于使用-v选项的后期构建脚本。