2015-08-18 4 views
0

Аналогичный вопрос о сравнении TEST DACPAC (READY) < => Производство DACPAC с целью развертывания на сервере Production DB на форумах SQL Server два года назад.dacpac to dacpac сравнение и развертывание с проблемами БД?

И, по-видимому, это было предложено кем-то из MS, это НЕ рекомендуется. Это все еще актуально? Мы надеялись автоматизировать наши развертывания, чтобы обеспечить непрерывную сборку и развертывание с использованием сравнений DACPAC.

Если вы считаете, что не рекомендуется использовать DACPAC, пожалуйста, укажите причину, почему? и что бы вы предложили вместо этого?

URL Ссылка на исходном SQL форуме вопрос здесь: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a1e5fb60-3283-4acc-b793-cb28e327dd39/using-dacpac-files-in-an-integrated-deployment-process?forum=ssdt

+0

Почему вы хотите сравнить dacpac с dacpac? Нормальная вещь - иметь один dacpac, который вы сравниваете с вашим сервером dev, QA, Prod и т. Д., Так что схемы все одинаковы. –

+0

THanks @EdElliott, что помогает –

ответ

2

Сравнение dacpac к dacpac хорошо, но больше вещей может пойти не так, когда это делать. Например, целевая платформа «production dacpac» может отличаться от реальной платформы вашей производственной базы данных, что может привести к созданию сценария, содержащего T-SQL, который не работает на вашем производственном сервере. Или параметры базы данных, указанные в «production dacpac», могут не соответствовать фактическим параметрам базы данных вашей производственной базы данных, что также может привести к созданию сгенерированного скрипта, содержащего T-SQL, который не будет работать в вашей производственной базе данных.

Хуже всего то, что «производственный dacpac» может быть не эквивалентен производственной базе данных, т.е. некоторые объекты могут существовать в производственной базе данных, которые не находятся в «производственном дакпаке» или наоборот, что могло бы приводят к непреднамеренным побочным эффектам, таким как схема или потеря данных.

Именно поэтому мы рекомендуем развертывать или генерировать сценарий развертывания, используя производственную базу данных в качестве цели непосредственно вместо dacpac для сравнения dacpac.

+0

Спасибо @StevenGreen, это было действительно полезно. –

0

Что вы также можете сделать, это зарегистрировать базу данных в качестве ЦАП, и вы можете обнаружить дрейф перед выпуском кода. Если дрейф детектируется вы можете либо

  • Модифицированные изменения, внесенные в производство обратно в исходный код
  • Принять изменения будут перезаписаны, который означает, что необходимо перерегистрировать базу данных в качестве ЦАП, а затем развернуть.

Имея стандартный процесс развертывания от dev до prod, вы можете использовать обнаружение дрейфа, чтобы узнать, не сделал ли кто-то что-то, что у них не должно быть, и вы можете доверять окружающей среде. Я бы не предложил сделать сравнение dacpac vs dacpac.

Смежные вопросы