环境:
- 使用 Visual Studio 2013 Update 4 中的 SQL Server 数据库工具创建用于发布数据库的 DacPac。
- 使用 TFS 构建来构建和删除数据库项目。
- 使用 SqlPackage 版本将 dacpac 发布到 SQL Server 2012。
使用 SqlPackage 操作“发布”,部署脚本是根据目标数据库的默认值使用以下变量生成的:
:setvar DefaultDataPath "H:\YourServerDefault"
:setvar DefaultLogPath "H:\YourServerDefault"
我想覆盖这些位置以登陆我们配置了一些外部加密的特定目录对。
我试图以几种方式覆盖这些 SQLCMD 值:
在命令行上覆盖:
SQLPackage /Action:Publish /SourceFile:./Db.dacpac /Profile:./MyProfile.publish.xml /Variables:DefaultDataPath=H:\MyNewLocation
在发布配置文件中添加覆盖(下面的代码段):
<ItemGroup>
<SqlCmdVariable Include="DefaultDataPath ">
<Value>H:\YourServerDefault</Value>
</SqlCmdVariable>
</ItemGroup>
虽然我可以使用任何一种技术来覆盖我自己定义的 SQLCMD 变量,但是像 DefaultDataPath 和 DefaultLogPath 这样的内置变量会被忽略。
使用 SqlPackage 发布时有没有办法覆盖这些值?