2015-09-08 1 views
0

Dans mon entreprise, nous travaillons sur la réalisation de CI et CD et l'utilisation de SqlPackage pour déployer des dacpacs.Déploiement Parallèle Dacpac - Désactiver les dépendances?

en raison du fait que chaque Dacpac prend un certain temps, nous les exécutons en parallèle. Cependant, nous rencontrons parfois des problèmes concernant les dépendances - par exemple: DB A est en cours de déploiement mais dépend de la DB B qui est également déployée en même temps (par exemple une dépendance de procédure stockée)

est-il possible d'exécuter le sqlpackage avec un drapeau ou quelque chose pour ignorer ces dépendances et ne pas échouer lors du déploiement?

grâce

Répondre

0

Je suppose que vous obtenez « Nom d'objet incorrect « XX.XX.XX » » ou quelque chose de similaire?

Il s'agit d'une exigence SQL, quand vous faites un create/alter sql le compile et valide qu'il est correct, donc si les dépendances n'ont pas été déployées, sql ne vous laissera pas déployer les mises à jour.

Vous aurez besoin de les déployer dans le bon ordre, j'ai peur. Pour limiter le temps de déploiement réel (mais n'arrêtera pas le temps global), vous pouvez générer les scripts et les exécuter dans l'ordre de vos dépendances (sauf si vous avez des dépendances bidirectionnelles - je ne suis même pas sûr de savoir comment cela fonctionnerait!) donc vous les générez hors ligne alors quand il s'agit de déployer les scripts (donc vous déplacez la génération de script vers l'étape CI et l'étape CD devient juste pour exécuter les scripts plutôt que de comparer et d'exécuter des scripts)

ed

+0

idée intéressante pour créer des scripts le problème ici est que nous faisons des CI donc la création des scripts et leur exécution peut prendre plus de temps que la publication. – JarJarrr

+0

tenez compte du fait que nous déployons des dacpacs précompilés en utilisant SqlPackage.exe – JarJarrr

+0

Je ne suis pas sûr que cela corresponde à tous les scénarios et je suppose que cela ne vous aidera pas désolé –

1

Le déploiement simultané de ce type n'est pas l'approche recommandée. Mais je suppose que vous pouvez écrire un deployment contributor qui trouve des étapes qui nécessitent une dépendance externe et réécrire le TSQL de l'étape de sorte qu'il réessaie le TSQL jusqu'à ce qu'il réussisse ou dépasse une limite définie sur le temps d'exécution ou le nombre de tentatives. Notez que cela pourrait produire un blocage dans le cas de dépendances circulaires, donc j'espère que vous n'en avez pas.

0

Lorsque vous ajoutez dacpac en tant que référence de base de données, vous pouvez le marquer pour ignorer les erreurs. Ce pourrait être une solution pour votre cas.