0

从两个 .dacpac 文件中,我可以使用以下命令获取更新脚本

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"
});
4

1 回答 1

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

于 2013-11-19T16:26:35.960 回答