Jusqu'à aujourd'hui, j'ai pu utiliser la fonctionnalité de comparaison de schémas de Visual Studio 2012 pour mettre à jour une base de données à partir d'un projet de base de données. Mais maintenant, pour un projet, je peux faire la comparaison, mais le bouton de mise à jour est grisé.
Je peux utiliser d'autres projets pour mettre à jour d'autres bases de données, mais je ne peux mettre à jour aucune base de données à partir de ce projet. Je ne reçois aucune erreur, la fonctionnalité est tout simplement indisponible.
Utiliser publier fonctionne toujours. La mise à jour du projet à partir de la base de données fonctionne également, mais pas l'inverse.
Est-ce que quelqu'un sait pourquoi je ne serais pas en mesure de mettre à jour une base de données via Schema Compare?
Vérifiez au bas de l'écran après une comparaison, les messages d'état sont affichés. J'ai constaté ce problème s'il y avait une erreur de compilation dans le projet de base de données. Une fois l'erreur résolue, fermez et rouvrez le dialogue de comparaison. Relancez votre comparaison et le bouton Mettre à jour devrait être à nouveau disponible.
Vous devez vérifier les utilisateurs de base de données et le schéma de base de données. Souvent, si les utilisateurs de base de données ne sont pas correctement répliqués dans le projet de base de données, Schema Compare ne fonctionne pas.
Pour moi, le volet de liste des erreurs et le volet de sortie ne montraient rien dans Visual Studio 2015. Ce n'est qu'après avoir construit le projet de base de données que je ciblais que j'ai pu voir les erreurs dans le volet de sortie (mais pas dans le volet de la liste des erreurs ). Après avoir corrigé ces erreurs, le bouton Mettre à jour n’était plus grisé.
Couru dans le même problème moi-même. Comme indiqué ci-dessus, la liste normale des erreurs de Visual Studio répertorie les erreurs qui bloquent la mise à jour ... mais il y aura également des avertissements. Une des options activées par défaut est que la perte de données bloque la mise à jour . C'est le problème. Même s'il ne s'agit que d'une condition d'avertissement, toute perte de données possible est fonctionnellement une erreur, sauf si vous modifiez cet indicateur.
à mon humble avis, il s’agit d’un échec assez grave de la part de MS, mais qu’allez-vous faire?
Ce qui a fonctionné pour moi, c’est d’inclure le schéma. Je choisissais d’inclure uniquement certaines tables/procs, etc. éléments.
Dans mon cas, le problème était que j'avais installé une version plus récente de SQL Server et SSMS (2016). Vous devez toujours vous assurer que la version correcte de Sql Server Data Tools est installée pour correspondre à la version avec laquelle vous effectuez la comparaison. Voici le lien vers SSDT pour SQL Server 2005-2017 que j'ai vérifié en travaillant avec Visual Studio 2017:
https://docs.Microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017
Vous devez vous assurer que toutes vos variables SQLCMD ont des valeurs par défaut.
Cliquez avec le bouton droit sur le projet dans l'explorateur de solutions et sélectionnez Propriétés.
Dans l'onglet de gauche, accédez à Variables SQLCMD et entrez la ou les valeurs par défaut dans la colonne fournie.
Après avoir exécuté votre schéma de comparaison une autre fois, le bouton de mise à jour devrait maintenant être disponible.
Pour moi, j'ai changé l'ordre des tables ajoutées. S'il existe une relation entre deux tables, vous devez ajouter la table parent, puis une table dépendante de la base de données.
Non seulement le schéma doit être dans votre projet de base de données, mais il doit être mis à jour s'il change dans la base de données. Les mises à jour ont cessé de fonctionner après que le DBA ait accordé une autorisation d'exécution à une nouvelle connexion SQL dans la base de données d'un schéma figurant dans mon projet. Après plusieurs échecs d'application de modifications de procédures stockées à mon projet, j'ai mis à jour le projet en sélectionnant uniquement le schéma modifié. Après la mise à jour du schéma dans le projet de base de données, la mise à jour a recommencé à fonctionner. J'inclus le schéma dans toutes les mises à jour. J'espère que cela t'aides.