我有一个带有 VS2015 的 SSDT 项目,并使用 SqlPackage.exe 生成部署脚本和增量更新脚本。数据库项目包含部署后脚本。这是我为数据库安装生成主脚本的方式:
sqlpackage.exe
/a:Script
/op:"database.sql"
/sf:"database.dacpac"
/tsn:"localhost"
/tdn:"MyDbName"
/p:CommentOutSetVarDeclarations="True"
/p:ScriptDatabaseCompatibility="True"
/p:IgnoreFileAndLogFilePath="True"
/p:IgnoreFilegroupPlacement="True"
/p:ScriptFileSize="True"
/p:PopulateFilesOnFilegroups="False"
这将输出我使用sqlcmd.exe运行的database.sql文件。该脚本文件还包含我所有的部署后脚本(插入、更新等)
一旦我有了新版本的数据库,我就从之前拍摄的 dacpac 快照创建增量更新脚本:
sqlpackage.exe
/a:Script
/op:"%migratePath%\%database%.!build!-%version%.sql"
/sf:"%snapshotPath%\%database%.%version%.dacpac"
/tf:"%snapshotPath%\%database%.!build!.dacpac"
/tdn:"MyDbName"
/p:CommentOutSetVarDeclarations="True"
/p:AllowIncompatiblePlatform="True"
/p:IgnorePermissions="True"
/p:IgnoreRoleMembership="True"
/p:ExcludeObjectTypes=Users;Credentials;Logins;Permissions;RoleMembership;ServerRoles;ServerRoleMembership;
这很好用,但是,增量更新脚本不包含元数据/参考数据(例如国家、州、货币等的列表)。
有没有办法告诉 SqlPackage 生成包含表引用数据的增量脚本?