2017-10-03 4 views
0

J'utilise DacFX dans un programme d'installation personnalisé. J'essaie de remplacer les données par défaut et les emplacements de fichier journal en transmettant les variables Cmd DefaultDataPath & DefaultLogPath mais les fichiers de la base de données sont toujours créés dans les emplacements par défaut. Cela semble qu'il devrait être très simple et facile, mais même après avoir généré le script et l'avoir enregistré dans un fichier et avoir parcouru le code, je peux voir que l'objet DacOptions a les bonnes valeurs pour SqlCommmandVariableValues ​​mais le script généré n'a pas le valeurs. Il semble qu'ils sont ignorés.DacFx ignore les variables Cmd: DefaultDataPath & DefaultLogPath

dacOptions.SqlCommandVariableValues.Add("DefaultDataPath", dataPath); 
dacOptions.SqlCommandVariableValues.Add("DefaultLogPath", logPath); 

Répondre

0

J'ai passé un peu de temps avec réflecteur, mais ne pouvait pas voir facilement si ceux-ci sont ignorés ou non :)

Ce que je l'ai fait dans le passé est de lancer d'abord un script pour créer la base de données S'il n'existait pas avec les paramètres de fichier que je souhaitais, le déploiement mettrait à jour une base de données vide ou mettrait à jour la base de données existante.

Le sql est assez simple:

if not exists(Select * from sys.databases where name = 'XX') 
begin 
    create database blah blah 

end 

La chose avec SSDT/DacFx est-ce que vous obtient la plupart du temps là, mais vous juste besoin parfois de lui donner un coup de main premier :). Si vous ne pouvez pas modifier les fichiers par défaut, exécutez d'abord un script SQL pour le configurer. Vous disposez déjà de tous les détails et autorisations dont vous aurez besoin, ce qui vous facilitera la tâche.

Je voudrais également élever une connexion comme un bug et il pourrait être corrigé, ou du moins nous pourrions apprendre pourquoi il ne peut pas être changé.