从两个.dacpac文件中,我可以使用以下命令获取更新脚本</ p>
sqlpackage.exe / Action:Script /SourceFile:"C:\Test\bin\Debug\Test.dacpac“/ TargetServerName:localhost \ DenaliRC0 / TargetDatabaseName:deploy_Test
这怎么会只生成DDL更改(架构更改)。但这不包括任何数据变化。无论如何我可以从两个dacpacs获得那些数据更改(DML)吗?
Flowing是我用来获取架构变化的java代码。
CommandLineUtils.execute(this.log, "sqlpackage.exe", new String[]
{
"/Action:Script",
"/SourceFile:" + targetDacPac.getAbsolutePath(),
"/TargetFile:" + previousDacPac.getAbsolutePath(),
"/OutputPath:" + scriptOutput.getAbsolutePath(),
"/TargetDatabaseName:changeme",
"/p:ScriptDatabaseOptions=False",
"/p:IgnoreAuthorizer=True",
"/p:IgnoreLoginSids=False",
"/p:DropObjectsNotInSource=True",
"/p:IgnoreFilegroupPlacement=False"
});
答案 0 :(得分:2)
我认为您需要查看部署前和部署脚本,以处理将数据放入表中和/或修改现有数据。 SSDT(及其前身)不处理项目中的数据,除了所谓的“bacpac”文件。这是一次性架构和数据组合,其中架构以普通XML格式存储,数据以原生格式BCP文件存储(如果我理解正确的话)。
我建议您查看有关部署前/后脚本的文章: http://schottsql.blogspot.com/2012/11/ssdt-pre-and-post-deploy-scripts.html
你也可以在这里看到我在SSDT上写的内容 - 你可能会发现一些有用的东西: http://schottsql.blogspot.com/2013/10/all-ssdt-articles.html