SqlPackage - как мне остановить отключение моего хранилища запросов? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть проект базы данных в Visual Studio 2017. Наш проект базы данных управляется так же, как и любая другая библиотека кода, где несколько разработчиков могут обновлять проект по мере необходимости.Чтобы облегчить задачу развертывания, я создал пользовательскую задачу развертывания в нашем процессе сборки TFS 2018 (vNext), которая представляет собой сценарий powershell, который вызывает sqlPackage.exe.SqlPackage сравнивает наш проект скомпилированной базы данных (файл * .dacpac) с нашей целевой базой данных (в Dev, QA и т. Д.).Я настроил пользовательский шаг так, чтобы он записывал ожидаемые изменения на диск, чтобы у меня была запись того, что было изменено, затем sqlPackage выполняет второй проход, чтобы применить изменения к целевой целевой базе данных.

Мой администратор БДвключил хранилище запросов в нашей базе данных SQL 2016Во время моего развертывания sqlPackage, один из начальных шагов - отключить хранилище запросов, это делает моего администратора базы данных несчастным.Он хочет иметь возможность сравнивать изменения до и после развертывания, но если хранилище запросов отключается, мы теряем историю.

Я попробовал несколько переключателей в документации (https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx#Publish%20Parameters,%20Properties,%20and%20SQLCMD%20Variables), но не могу найти магический параметр.

Как мне остановить SqlPackage от выключенияхранилище запросов?

Мой текущий сценарий:

sqlPackage.exe /Action:Script /SourceFile: myPath\MyDatabaseName.dacpac" /OutputPath:"myPath\TheseAreMyChangesThatWillBeApplied.sql" /TargetConnectionString:"Integrated Security=true;server=MyServer;database=MyDatabase;" /p:DropObjectsNotInSource=false /p:DropPermissionsNotInSource=false /p:DropRoleMembersNotInSource=false /p:BlockOnPossibleDataLoss=True /Variables:"CrossDatabaseRefs=CrossDatabaseRefs

Есть ли лучший способ? Я удивлен, что мне пришлось написать пользовательскую задачу сборки TFS, чтобы сделать это. Что заставляет меня думать, чтоЯ мог бы делать это трудным путем (но это работало довольно хорошо для меня в течение последних нескольких лет). Я люблю проекты баз данных, мне нравится, что они применяют ссылки и гарантируют, что мы не нарушаем другие объекты, когда столбецупал (например).

Любое понимание будет с благодарностью.

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Либо отключите сценарии свойств базы данных, используя / p: ScriptDatabaseOptions = false, либо обновите свойства базы данных в проекте, чтобы отразить требуемые параметры хранилища запросов.

Чтобы установить параметры хранилища запросов в проекте, щелкните правой кнопкой мыши проект базы данных в обозревателе решений и откройте Свойства. Оттуда на вкладке «Настройки проекта» найдите кнопку «Настройки базы данных ...». В диалоговом окне «Настройки базы данных» перейдите на вкладку «Операционные» и прокрутите вниз, чтобы найти настройки хранилища запросов.

0 голосов
/ 29 июня 2018

Очевидно, все, что нам нужно было сделать, это добавить сценарий после развертывания, чтобы снова включить хранилище запросов. Надеюсь, это поможет кому-то там ...

ИСПОЛЬЗОВАНИЕ Master ALTER DATABASE [MyDbName] SET QUERY_STORE = ON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...