web-dev-qa-db-fra.com

Comment exclure les clés étrangères lors de la publication Action dans Sqlpackage

J'essaie de publier un extrait de fichier .DACPAC dans une base de données cible, je souhaite exclure les contraintes de clé étrangère dans toutes les tables. Après avoir traversé le ExcludeObjectTypes options Je ne trouve pas de moyen clair d'exclure les clés étrangères.

J'ai besoin de migrer la structure de schéma de la source, à l'exception des clés étrangères, car je chargerai les données parallèlement par d'autres moyens. Donc, l'exigence est de simplement exclure les clés étrangères lorsque j'effectue publier

3
Shikhar Nahar

Vous devez désactiver l'option de déploiement "Validation du script pour de nouvelles contraintes".
Les clés étrangères seront toujours créées, mais dans l'état de confiance et les données existantes ne seront pas validées.
[.____] Publier Script contient quelque chose comme:

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

Cela vous permettra de déployer toutes les contraintes sans erreurs, mais vous devez toujours les désactiver dans le script de déploiement post.

enter image description here

1
Piotr

Si vous souhaitez contrôler la création du fichier DACPAC, votre meilleur pari serait de publier normalement, puis d'utiliser un script publié Déploiant toutes les contraintes de clé étrangère dans cette base de données.

n script de déploiement post est un script SQL dans votre projet SSDT qui possède une "action de construction" de "PostDeploy" comme ceci:

screenshot of post deploy script in Visual Studio

Il existe de nombreuses options pour supprimer toutes les contraintes de clés étrangères à l'aide d'un script T-SQL, dont beaucoup sont discutés dans ce débordement de pile Q & A: Comment laisser tomber toutes les contraintes de clé étrangère dans toutes les tables?

0
Josh Darnell