Sql-Server
部署腳本總是重新創建約束和索引
從 SSDT 生成部署腳本時,它總是生成刪除外鍵約束和索引的程式碼,然後再次創建這些約束和索引。如何在生成部署腳本時刪除刪除和重新創建這些對象的程式碼?SSDT有什麼選擇嗎?
這通常是因為它們的編寫方式和 sql 儲存它們的方式之間存在差異。
作為從數據庫到項目的比較的一次性事情,您應該看到鍵上有一些差異,應用它們並且它應該停止這樣做。
正如前面的答案所述,它會在許多不需要的情況下刪除並重新創建對象。您最好的選擇是更新數據庫或原始碼控制定義以使對象彼此同步,而不是依賴 SSDT 協調工具,這會做出非常糟糕的選擇。
例如,如果約束名稱有差異,例如原始碼管理和數據庫環境之間,您可以在數據庫環境中將其重命名為與 SC 一致,或者在 SC 中將其重命名為與 DB 一致。否則 SSDT 會想要刪除並重新創建它,因為它總是採用適用於所有情況的路徑,而不是阻力最小的路徑。
我已經看到它刪除並重新創建一個表只是為了將一列上的列定義從 VARCHAR(50) 更改為 VARCHAR(100)。