Как стать автором
Обновить

Комментарии 8

То есть эта штука, будучи выполненной, должна произвести на свет БД со структурой, описанной скриптами? Как быть в случае (взаимо)зависимых объектов, как определять исходное наполнение БД данными (например, для справочников)? Тоже через этот механизм?

Совершенно верно, приложение будет выгружать структуру БД по файлам и генерировать BAT файл.
Создание зависимых объектов можно сделать в цикле. Если ошибка, то продолжать создавать другие объекты, потом повторно выполнять ошибочные. Кстати, FOREIGN KEYS и DEFAULT CONSTRAINTS должны быть в отдельной папке, чтобы не возникало ошибок при создании таблиц, это тоже будет учитываться.
Есть такая штука — Database project в Visual Studio.
Пользуюсь. Очень просто насетапить пайплайн в Azure DevOps.
Зачем люди тратят усилия на подобные штуки — всегда было для меня загадкой.
Для меня важно, чтобы скрипт создания объекта БД был такой же, как в SQL Server Management Studio (SSMS) + добавлялись проверки существования объектов в том виде, которые я описал.
К сожалению, Database project не умеет работать с файловыми группами и дополнительными параметрами, которые есть в SSMS. Кроме этого, не добавляет проверки существования объектов. Поэтому Visual Studio для меня не подошло.

есть там все, .dacpac файл при деплое может сам сдиффить базу и сгенерировать миграционый скрипт (только изменения). Он даже предупредит, если ожидаются потери данных (удалили столбец например)

Единственное, что бесит не смог победить, так это попытка удалить clustered columstore index при добавлении новых столбцов. И не нашёл, как заставить новые индексы на таблице создавать в online режиме.
В остальном database project вполне гОдная штука.
А это и невозможно. Бай дизайн. Для стандарта — так уж точно.
Давно использую powershell для задач выгрузки схемы SQL
За основу взят скрипт Export MSSQL schema with PowerShell. This script will export your schema definitions for tables, stored procs, triggers, functions and views to .sql files (вроде похож).
Но допилен для выгрузки ролей, прав и расширенных свойств (sp_addextendedproperty) баз, таблиц, полей.
Конфиг храню в XML.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.