2015-08-19 1 views
1

J'ai créé un projet de base de données dans Visual Studio 2013. Le projet a été réalisé avec succès. Dans ce projet, j'ai inséré quelques données de test dans le post-déploiement. Si des données n'ont pas pu être insérées, alors comment savoir si l'un des scripts a échoué à un emplacement particulier.Comment est-ce que je connais une commande particulière est échoué lors du déploiement/publication de données dans la base de données?

En fait, je veux tout annuler si une commande échoue à partir du fichier script lui-même. Étant donné que SQL Server 2012 ne prend pas en charge la restauration à partir du script de pré/post-déploiement.

Répondre

1

La fenêtre de résultat vous donnera la ligne et les détails de toute erreur, c'est un peu ennuyeux car il montrera parfois le texte du début du script mais le numéro de ligne d'erreur sera correct.

En règle générale, assurez-vous que vos scripts d'insertion sont relancés, puis, si vous ne pouvez vraiment pas voir l'erreur, vous pouvez exécuter le script vous-même pour le déboguer.

Je recommande vraiment l'utilisation MERGE déclarations pour faire les inserts :)

Je recommande aussi généralement à l'aide sqlpackage.exe pour pousser aux instances locales Deb plutôt que vs publier, voir:

https://the.agilesql.club/blog/Ed-Elliott/Visual-Studio-SSDT-Publish-My-Personal-Best-Practices

Ed

+0

Oui Ed vous dites correctement. Mais 1) J'ai besoin de faire une restauration si une instruction échoue. 2) Je déploie également mes données en utilisant dacpac. Y at-il un moyen de trouver la même chose. Comme le serveur SQL ne me permet pas de revenir au script de post-déploiement, je dois le faire manuellement. –

+0

Vous pouvez ajouter vos propres transactions/rollback au script de post-déploiement (il ne reviendra pas sur les modifications du schéma) * MAIS * comme c'est une instance de dev, je réparerais simplement le problème et je redéploierais dans un processus pour l'arrêter de rompre de cette façon à nouveau :) –