【发布时间】:2015-02-03 13:45:05
【问题描述】:
为了控制数据库版本,我使用 Visual Studio 数据库项目,但要执行项目生成的脚本,我使用 sqlcmd.exe。
在我的 script.postdeployment.sql 中有一个名为 $(environment) 的变量,它取决于服务器环境 (prd,uat,dev),我使用命令 sqlcmd.exe -v environment="dev" 将此值设置为该变量。问题是 Visual Studio 抛出编译错误
SQL72008:未定义变量环境。
好的,我知道为什么会出现此错误,这是因为该变量未在 Prject 属性(SQLCMD 变量选项卡)中定义,但是如果我在项目属性中添加此变量,则该值将在脚本中设置覆盖我在 sqlcmd.exe -v environment="dev" 中传递的值。
例如
,如果我在项目属性中设置$(environment)变量为“uat”并执行sqlcmd.exe -v environment="dev",最高优先级是我在项目属性中设置的值,所以UAT,因为该项目在我的脚本中生成以下语句:
:setvar app_environment "uat"
我该如何处理 Visual Studio 数据库项目和 sqlcmd.exe 之间的这个问题?
【问题讨论】:
-
您使用的是哪个版本的 Visual Studio?
-
我希望 Visual Studio 避免生成语句 ":setvar app_environment "uat"",但仅针对此变量...它将解决我的问题...
-
您是否尝试过使用发布配置文件来设置变量,然后从命令行调用它? schottsql.blogspot.com/2012/11/…
-
是的,其实我就是这样做的,买。如果在发布配置文件中创建一个名为 Environment 的变量,则需要为每个环境创建多个文件并重复不会因环境而改变的值。不好!!
标签: sql-server visual-studio database-project