Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 数据库项目SQLCMD-v_Sql Server_Visual Studio_Database Project - Fatal编程技术网

Sql server 数据库项目SQLCMD-v

Sql server 数据库项目SQLCMD-v,sql-server,visual-studio,database-project,Sql Server,Visual Studio,Database Project,为了控制数据库版本,我使用Visual Studio数据库项目,但为了执行项目生成的脚本,我使用sqlcmd.exe 在我的script.postdeployment.sql中有一个名为$(environment)的变量,它取决于服务器环境(prd、uat、dev),我使用命令sqlcmd.exe-v environment=“dev”将此值设置为此变量。问题是VisualStudio抛出编译错误 SQL72008:未定义变量环境 好的,我知道为什么会出现此错误,这是因为变量未在项目属性(SQL

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

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

SQL72008:未定义变量环境

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

比如说

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

:setvar app_environment "uat"

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

我解决此问题的方法是按如下方式设置部署后脚本的属性:

构建操作:无

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


执行此操作时,VisualStudio将不会生成post脚本文件,而是将其复制到/bin文件夹。然后可以调用SQLCMD两次。一次用于数据库创建脚本,然后第二次用于使用-v选项的生成后脚本。

您使用的是哪个版本的Visual Studio?我希望Visual Studio避免生成statent“:setvar app_environment“uat”,但仅用于此变量。。。这将解决我的问题…您是否尝试过使用发布配置文件来设置变量,然后从命令行调用它?是的,事实上我是这么做的,买。如果用户在发布配置文件中创建名为Environment的变量,则需要为每个环境创建多个文件,并重复不随环境更改的值。这不好!!