【发布时间】:2014-02-11 17:30:51
【问题描述】:
我们在 Visual Studio 中有一个 DB 项目,它会生成一个 .dacpac 文件。然后我们使用这个 dacpac 和 sqlcommand.exe 来部署我们的数据库。 我们的要求是能够在部署时更改列类型,就像我们可以使用 sqlcommand.exe 开关更改数据库名称一样。 例如:
:setvar CHARTYPE "VARCHAR"
ALTER TABLE tempTable ADD newColumn $(CHARTYPE)(200);
--or
DECLARE @tempVar $(CHARTYPE)(200);
此 SQL 可通过 SSMS 完美运行,但尝试通过 Visual Studio 执行此操作被证明是困难的。
我在项目属性中创建了一个 SqlCmd 变量,并在存储过程主体中使用它:
DECLARE @TempVar $(CHARTYPE)(100)
但这不起作用。我的 DB 项目无法构建,并在 @TempVar 处给我一个语法错误。
如果我在引号 '$(CHARTYPE)' 中使用 SqlCmd 变量,它很好,并且显示为字符串文字 'VARCHAR'。
我在构建项目的时候开启了SqlCmd模式,并没有什么不同。如何让 Visual Studio 意识到我正在使用 SqlCmd 变量?
【问题讨论】:
标签: sql-server visual-studio-2013 sqlcmd database-project