2016-09-05 11 views

ответ

3

Лучший способ, который я видел, - использовать операторы слияния, одну таблицу на файл и импортировать их в ваш пост-развертывающий скрипт, используя: r import.

Вы получаете историю версий и легко сопоставимые данные, а использование sp_generate_merge делает ее очень простой.

Ed

+0

thansk Ed. является 'sp_generate_merge' из https://github.com/readyroll/generate-sql-merge/blob/master/master.dbo.sp_generate_merge.sql? – beewest

+0

Да, есть pr, который включает в себя заказ по первичному ключу, который действительно полезен –

+0

Спасибо, что напомнили мне об этом pr, Ed! Я пошел вперед и объединил его, чтобы вы могли просто использовать ссылку, которую @beewest упомянул, чтобы получить proc. –

3

Если вы ищете решение в SSDT для обработки ссылок, которая не предполагает использование сценариев до/после развертывания, к сожалению, в настоящее время не один.

Но это в настоящее время one of the most requested features in SSDT, так что, возможно, есть шанс, что он будет реализован некоторое время в будущем.

Я хранитель sp_generate_merge ОСС утилиты Ed упоминалась, и в RedGate мы рекомендуем этот подход к обработке базовых данных в автономном пути к нашим клиентам, в следующих случаях:

  • Если данные в таблице меняются очень часто, так как подход «один файл за стол» позволяет разветвлять/сглаживать одновременные изменения от нескольких разработчиков.
  • Если данные в таблице содержат значения, зависящие от среды, такие как параметры приложения, как этот метод позволяет использовать переменные SQLCMD и feed the values in from a deployment tool

Где форума подход может быть проблематичным:

  • Non-детерминизм MERGE заявления: перед тем как запустить развертывание против вашей целевой среды, это может быть трудно знать, какие изменения (если есть). В худшем случае вы можете нажать один из documented issues in MERGE
  • Рабочий процесс не обязательно является самым естественным способом редактирования данных, так как он требует запуска утилиты proc и копирования/вставки вывода обратно в исходный файл. Редактирование файла напрямую является альтернативой, но это не самый удобный для пользователя опыт, особенно при большом количестве справочных данных.
  • Согласование изменений как схемы, так и данных в справочной таблице может быть проблемой, учитывая, что SSDT по-прежнему отвечает за изменение схемы. Например, если вы хотите добавить новый столбец NOT NULL без значения по умолчанию.

Другое решение включает в себя после онлайн подход, который поддерживается нашим SSDT-альтернативы ReadyRoll проектов баз данных. Он позволяет редактировать данные непосредственно в базе данных и впоследствии импортировать в проект с помощью сценария синхронизации (то есть содержащего , UPDATE, DELETE операторов вместо MERGE), сгенерированных его инструментом сравнения данных, наряду с любыми изменениями схемы.

Вы можете узнать больше о том, как в автономном и онлайн-подходах различаются ReadyRoll documentation.

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

  • Нет связанных вопросов^_^