1

私はVisual Studioでデータベースプロジェクトを使用しています。SSDT方法:対象のドロップカラムを無視して.dacpacを展開する

私のシナリオでは、私が提供するデータベースを直感的にカスタマイズする顧客がいます。既存のテーブルにいくつかの列を追加し、新しいテーブルを追加します。

.dacpacの配備時に、私のスキーマに含まれないオブジェクトは除外されません。重要

設定DropObjectsNotInSource = FALSEは、表の列のために働いていません。

EDIT

エド私が何か間違ったことをやっている場合は、以下を参照してください。

using (DacPackage dacPackage = DacPackage.Load(DacPacFileName)) 
{ 
    var dacServices = new DacServices(ConnectionString); 

    var dacOptions = new DacDeployOptions 
    { 
     AdditionalDeploymentContributorArguments = "SqlPackageFilter=KeepTableColumns(*)" 
    }; 

    dacServices.Deploy(dacPackage, NomeBancoDados, true, dacOptions); 
} 

は '*' テーブルフィルタで "ALL TABLES" となっていますか?

テーブル名も試しましたが、動作しませんでした。

+2

彼らはあなたが作成したテーブルにカラムを追加している場合は、私はあなたが箱から出してそのことについて多くを行うことができることを知っていません。作成するオブジェクトは間違いなく無視できますが、 "自分の"テーブルを変更せず、独自のテーブルを作成/維持することについて顧客と会話する価値があります。既存の表に新しい列を追加する必要がある場合は、それを開発の一部にする必要があります。注意を払わないとコードを壊す可能性のあるものを簡単に追加できます。 –

答えて

1

私は、このシナリオのためにこれを書いた:

https://agilesqlclub.codeplex.com

あなたは、彼らが存在しない場合は、オブジェクトを展開しますが、そこに変化があるか、完全に無視することを「無視」場合は展開しない「キープ」することができます。

あなたは、タイプまたは名前(正規表現)にこれを行うことができます

エド

+0

Tks Ed、SqlPackageFilter = KeepTableColumns(すべてまたは*)など、すべてのテーブルに対してSqlPackageFilter = KeepTableColumns(Employees)を使用するにはどうすればよいですか? –

+0

私はNuget DacFrameworkを使用していますが、どこにAgileSqlClub.SqlPackageFilter.dllを配置する必要がありますか? –

+0

私はドキュメントを実行してツールを使用しようとしていますが、これまで成功していません:/ –

関連する問題