Командная строка /API для сравнения схем в SSDT SQL Server Database Project?
В Visual Studio 2012 мы Schema Compare
в SSDT SQL Server Database Project
(DbProject), который помогает
- Сравнить
source
против target
- Обновить
target
, чтобы сделать его таким же, как source
Где
- Источником и целью может быть либо база данных, проект DbProject, либо файл .dacpac.
- Обновление можно выполнить с помощью действия по обновлению или сгенерированного script
Мой вопрос в том, можно ли иметь и где я могу получить интерфейс командной строки /API для вызова этой функции?
Ответы
Ответ 1
База данных SOURCE
sqlpackage.exe/a: Extract/scs: Server =% Server%; Database = AspBaselineDB;/Тс:% DriveSpec%\%DacPath%\%AspBaselineDB% _baseline.dacpac
База данных TARGET
sqlpackage.exe/a: Extract/scs: Server =% Server%; Database =% AspTargetDB-2%;/Тс:% DriveSpec%\%DacPath%\%AspTargetDB%.dacpac
СРАВНИТЬ и ОБРАТИТЬ Delta script
sqlpackage.exe/a: Script/sf:%DriveSpec%\%DacPath%\%AspBaselineDB%_baseline.dacpac
/tf:%DriveSpec%\%DacPath%\AspNetDb\%AspTargetDB%.dacpac/tdn: aspTargetdb/op:% DriveSpec%\%SqlPath%\AspNetDb\AspDbUpdate.sql
ВЫПОЛНИТЕ script
sqlcmd.exe -S% Сервер%\aspnetdbAmexDev -i% DriveSpec%\%SqlPath%\AspNetDb\AspDbUpdate.sql
Я делаю это в сценариях CMD, так как наш ИТ-отдел не разрешает беззнаковые скрипты PowerShell, и они не будут покупать сертификат. Это работает безупречно, даже если вы вызываете его из Team Builds TFS 2012 или просто выполняете .CMD script из командной строки VS в качестве администратора.
Внимание!
Добавьте в свой script следующий SET: SET PATH =% PATH%; C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
Также: как вы видите, я задаю переменные пути. Я делаю это, поскольку я касаюсь до 50 вариантов базы данных, и это единственный последовательный способ, который я нашел для создания дельта-скриптов и обновления наших баз данных DEV и TEST.
Ответ 2
Вы просмотрели SqlPackage?
Ответ 3
В настоящее время единственный способ получить доступ к API для сравнения результатов схемы - это написать модификатор/исполнитель плана развертывания, который выполняется во время развертывания / script в DacServices API. Это позволяет изучить план развертывания, созданный при сравнении dacpac с базой данных, но также предоставляет доступ к ModelComparisonResult, который представляет собой сравнение схемы который доступен в объекте контекста, переданном в метод OnExecute вкладчика. Я только что написал сообщение в блоге, которое охватывает этот процесс и может быть вам полезна - взгляните на это и, надеюсь, это поможет вам начните.
Ответ 4
I написал несколько строк по этой теме некоторое время назад. Надеюсь, вы сочтете их полезными.
В двух словах инструмент, который вы ищете, vsdbcmd.exe
, который распространяется в версиях Ultimate и Premium Visual Studio.