Sql-Server
如何在 sqlpackage 中的發布操作期間排除外鍵
我正在嘗試將 .dacpac 提取發佈到目標數據庫,我只想排除所有表中的外鍵約束。經過這些
ExcludeObjectTypes
選項後,我沒有找到一種明確的方法來排除外鍵。我需要遷移源的模式結構,但外鍵除外,因為我將通過其他方式並行載入數據。所以要求是在我執行發佈時只排除外鍵
您需要禁用部署選項“新約束的腳本驗證”。
仍將創建外鍵,但處於不受信任的狀態,並且不會驗證現有數據。
發布腳本將包含以下內容:
ALTER TABLE [Tab] WITH NOCHECK ADD CONSTRAINT [FK_Tab] FOREIGN KEY ([Id]) REFERENCES [Tab2] ([Id]);
這將允許您部署所有約束而不會出錯,但您仍然需要在部署後腳本中禁用它們。
如果您可以控制 dacpac 文件的創建,最好的辦法是正常發布,然後使用部署後腳本刪除該數據庫中的所有外鍵約束。
部署後腳本是 SSDT 項目中的 SQL 腳本,其“建構操作”為“PostDeploy”,如下所示:
使用 T-SQL 腳本刪除所有外鍵約束有很多選項,其中許多在此堆棧溢出問答中進行了討論:如何刪除所有表中的所有外鍵約束?