Обновление версии приложения уровня данных через 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]