Обновление версии приложения уровня данных через SqlPackage.exe

В настоящее время я автоматизирую развертывание базы данных моих приложений с помощью командной строки с помощью SqlPackage.exe, но не могу найти способ обновить версию моего приложения уровня данных

(Разработка, конечно...)

http://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx

Я использую /Action:Publish, чтобы выдвинуть мой недавно созданный *.dacpac, но версия всегда остается на v1.0.0.0, если это невозможно? Как насчет того, как изменить ExtendedProperty?

Я просто хочу иметь ссылку на то, какая версия установлена, глядя на базу данных.

Есть идеи?

2 ответа

В том числе

/p:RegisterDataTierApplication=true

как часть командной строки я работал над тем, чтобы SqlPackage.exe обновил версию, сохраненную в метаданных уровня данных, на версию публикуемого DACPAC.

В ходе моего тестирования я обнаружил, что если для параметра RegisterDataTierApplication установлено значение true, выполняется обновление, если целевая база данных уже зарегистрирована. По сути, это свойство сообщает SqlPackage.exe, что DACPAC следует публиковать в виде пакета уровня данных, а не просто публиковать какие-либо измененные объекты (и, следовательно, вызывать дрейф).

Итак, полная команда, которую я использую

SqlPackage.exe /a:publish /tcs:<target connection string> /sf:<DACPAC file path> /p:RegisterDataTierApplication=true /p:BlockWhenDriftDetected=false

(Я обнаружил, что я должен был включить /p:BlockWhenDriftDetected=false потому что SqlPackage.exe возвращал ошибку, обнаружившую дрейф, даже если /a:deployreport не сообщил о каком-либо дрейфе.)

В вашем проекте базы данных перейдите в настройки проекта, там есть раздел Типы вывода, нажмите кнопку свойств под "Файл уровня данных (.dacpac)"):

В этом диалоговом окне вы можете установить номер версии, которая затем будет развернута, затем вы можете запросить эту информацию из:

SELECT TOP 1000 [instance_id]
      ,[instance_name]
      ,[type_name]
      ,[type_version]
      ,[description]
      ,[type_stream]
      ,[date_created]
      ,[created_by]
      ,[database_name]
  FROM [msdb].[dbo].[sysdac_instances]
Другие вопросы по тегам