web-dev-qa-db-ja.com

展開スクリプトは常に制約とインデックスを再作成します

SSDTからデプロイメントスクリプトを生成する場合、常に外部キーの制約とインデックスを削除し、それらの制約とインデックスを再度作成するコードを生成します。配置スクリプトの生成時にこれらのオブジェクトを削除して再作成するコードを削除するにはどうすればよいですか? SSDTのオプションはありますか?

4
Emman Bangis

これは通常、それらの記述方法とsqlによる格納方法に違いがあるためです。

Dbからプロジェクトに戻って比較すると、キーにいくつかの違いが見られるはずです。それらを適用すると、実行が停止します。

2
Ed Elliott

前の回答で述べたように、オブジェクトをドロップして再作成する必要のない多くの状況でオブジェクトを再作成します。最善の策は、データベースまたはソース管理定義を更新してオブジェクトを相互に同期させ、SSDT調整ツールに依存しないようにすることです。これは非常に悪い選択です。

たとえば、ソース管理とデータベース環境などで制約名に違いがある場合は、SCと整合するようにデータベース環境で名前を変更するか、SCで名前を変更してDBとの整合性。それ以外の場合、SSDTは常に抵抗を最小限に抑えるパスではなく、すべての状況で機能するパスを使用するため、ドロップして再作成する必要があります。

1つの列の列定義をVARCHAR(50)からVARCHAR(100)に変更するためだけにテーブルをドロップして再作成するのを見てきました。

0
Matthew Sontum