2016-03-03 4 views
0

nous avons une base de données centrale et besoin de mettre à niveau notre base de données locale. Nous utilisons dacpac pour le faire. Fondamentalement, nous apportons les modifications à la base de données sur le serveur. nous créons ensuite un dacpac. Il est mis dans le package de déploiement. Lorsque le client exécute l'application, il vérifie s'il existe une nouvelle version. Si c'est le cas, il sera mis à niveau. Le problème est que nous avons. Lorsque vous effectuez des modifications de base de données locales sans mise à niveau de dacpac, cela provoque un avertissement indiquant que des modifications ont été apportées à l'exception de dacpac. Donc, quand il s'agit de mettre à jour le dacpac (fait par le biais du code vb.net), il termine le processus mais ne fait aucun changement. saute essentiellement toutDacpac ne pas mise à niveau par le code correctement

mon code est comme suit

Si _package.Version <> DatabaseVersion Puis

  dacOptions.ScriptDatabaseOptions = True 
      dacOptions.BlockOnPossibleDataLoss = False 
      dacOptions.IgnoreIncrement = False 
      dacOptions.BlockWhenDriftDetected = False 
      dacOptions.RegisterDataTierApplication = True 
      dacOptions.IncludeTransactionalScripts = True 



      _service.Deploy(_package, localDB, True, dacOptions) 

     End If 

J'ai remarqué si je vais manuellement dans SSMS et essayer de mettre à niveau. il me demande la base de données a été changé et de cliquer sur continuer malgré la perte de données possible. Si je fais cela, cela fonctionnera manuellement. mais par le code, il ne semble toujours pas mettre à niveau même si j'ai blockonpossibledataloss = false

que puis-je faire pour résoudre ce problème?

Répondre

0

Je suggérerais de définir la valeur de FauxDonnéesApplicationFaux à moins que vous n'ayez l'intention d'utiliser la fonctionnalité de détection de dérive.