0

2 つの .dacpac ファイルから、次のコマンドを使用して更新スクリプトを取得できます

sqlpackage.exe /Action:Script /SourceFile:"C:\Test\bin\Debug\Test.dacpac" /TargetServerName:localhost\DenaliRC0 /TargetDatabaseName:deploy_Test

これにより、DDL の変更 (スキーマの変更) のみが生成されます。ただし、データの変更は含まれていません。2 つの dacpac からこれらのデータ変更 (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 ファイルに格納されたデータを使用した、1 回限りのスキーマとデータの組み合わせです (正しく理解していれば)。

デプロイ前後のスクリプトに関するこの記事をチェックすることをお勧めします: http://schottsql.blogspot.com/2012/11/ssdt-pre-and-post-deploy-scripts.html

また、SSDT について私が書いたものもここで見ることができます。何か役立つ情報が見つかるかもしれません

于 2013-11-19T16:26:35.960 に答える