2013-05-28 48 views
37

我在VS2012中创建了一个数据库项目。我添加了数据库结构。它可以很好地发布和比较数据库。VS2012涉及其他几个脚本的部署后脚本

现在发布我想用默认数据自动加载几个表。

我创建了五个脚本文件,其中INSERT语句从SQL Management Studio生成。他们被添加到我的数据库项目中的脚本文件夹。

然后我设置了BuildAction=PostDeploy。这工作正常。但由于某种原因,只能将一个脚本设置为PostDeploy ....

我意识到我可以将所有脚本移动到一个文件中。但我有很多,并且真的很想将它们分组在不同的文件中以保持一定的顺序。

然后我创建了一个PostDeploy.sql文件,并尝试从那里引用所有其他脚本文件。文件头给出了方向:

Post-Deployment Script Template       
---------------------------------------------------------------------------- 
This file contains SQL statements that will be appended to the build script. 
Use SQLCMD syntax to include a file in the post-deployment script. 
Example:  :r .\myfile.sql 

所以,我写我的文件:

:r .\MyScript1.sql 
:r .\MyScript2.sql 
:r .\MyScript3.sql 
:r .\MyScript4.sql 
:r .\MyScript5.sql 

文件抱怨在错误的语法。

回答

74

事实证明,Visual Studio愚弄我错误的语法警告!我的设置非常有效。

要避免警告,请右键单击文件内的任意位置,然后选择“执行设置 - SQLCMD模式”。

还有一个名为SQLCMD模式的工具栏按钮可以做同样的事情。

这里是万一菜单项,你找不到工具栏按钮: enter image description here

+0

这解决了的Transact-SQL编辑器,并认为这是一个语法错误的问题。但是SSDT项目仍然无法建立或部署。 – Pat

+0

尝试完全关闭Visual Studio。通过删除bin和obj文件夹,* .dbmdl,* .suo和* .user文件来清理SSDT解决方案,然后重新打开SSDT解决方案。您现在应该能够构建/部署您的项目。 – TDN

+0

@Pat看看输出窗口(而不是错误列表) - 你应该看到那里的实际错误。在我的情况下,我的包含文件的路径中有空格,整个路径需要用双引号括起来。不需要清洁/重新启动。 – sellotape