Sql-Server

如何在 sqlpackage 中的發布操作期間排除外鍵

  • February 10, 2021

我正在嘗試將 .dacpac 提取發佈到目標數據庫,我只想排除所有表中的外鍵約束。經過這些ExcludeObjectTypes選項後,我沒有找到一種明確的方法來排除外鍵。

我需要遷移源的模式結構,但外鍵除外,因為我將通過其他方式並行載入數據。所以要求是在我執行發佈時只排除外鍵

您需要禁用部署選項“新約束的腳本驗證”。

仍將創建外鍵,但處於不受信任的狀態,並且不會驗證現有數據。

發布腳本將包含以下內容:

ALTER TABLE [Tab] WITH NOCHECK
   ADD CONSTRAINT [FK_Tab] FOREIGN KEY ([Id]) REFERENCES [Tab2] ([Id]);

這將允許您部署所有約束而不會出錯,但您仍然需要在部署後腳本中禁用它們。

在此處輸入圖像描述

如果您可以控制 dacpac 文件的創建,最好的辦法是正常發布,然後使用部署後腳本刪除該數據庫中的所有外鍵約束。

部署後腳本是 SSDT 項目中的 SQL 腳本,其“建構操作”為“PostDeploy”,如下所示:

Visual Studio 中部署後腳本的螢幕截圖

使用 T-SQL 腳本刪除所有外鍵約束有很多選項,其中許多在此堆棧溢出問答中進行了討論:如何刪除所有表中的所有外鍵約束?

引用自:https://dba.stackexchange.com/questions/248953