Настройка сценариев развертывания для проекта базы данных Visual Studio 2010 - PullRequest
1 голос
/ 09 января 2012

Скрипты развертывания, сгенерированные визуальным проектом базы данных Studio 2010, мне не подойдут. Мне нужно включить их в MSI, который будет поставляться разным клиентам для обновления и создания новых баз данных.

Просматривая пространства имен Microsoft.Data.Schema ... Я вижу много возможностей для настройки генерации сценариев развертывания, DeploymentScriptGenerator, ExtensionManager и т. Д. И т. Д. Похоже, что он был разработан для расширения и поддержки любой базы данных. .

Что я не могу найти, так это какую-либо документацию или образцы для начала работы. Кто-нибудь сделал что-то подобное?

1 Ответ

0 голосов
/ 09 января 2012

Проекты данных Visual Studio используют два этапа развертывания.

Файлы развертывания, созданные путем создания проекта базы данных, на самом деле представляют собой просто пакет метаданных, которые описывают желаемое конечное состояние базы данных, но не знают, где будет развернуто или является ли это новымбаза данных или существующая база данных.

Вторая часть фактически выполняет пакет развертывания для определенной базы данных, существующей или новой.Для этого Visual Studio должен запустить diff для базы данных и пакета развертывания, определить, какие изменения необходимо применить, и сгенерировать сценарий, необходимый для применения этих изменений.

Итак, проблема в том, что у вас естьчто если вы включите первую часть в свой MSI, вам понадобится что-то, работающее на компьютере конечного пользователя, чтобы применить эти изменения к неизвестному числу неизвестных баз данных в полевых условиях, и вы не сможете реально отправить их в Visual Studio.

К счастью, MS также включает в себя командную строку (VSDBCMD.exe), которая позволяет вам взять этот единственный пакет развертывания и использовать его для применения изменений к любой базе данных.Этот инструмент будет делать то же самое, что и Visual Studio, и генерировать сценарий SQL, необходимый для создания / обновления этой базы данных (любой из них на самом деле запускает сценарий, если вы того пожелаете, на основе параметров командной строки).См. http://msdn.microsoft.com/en-us/library/dd193283.aspx для получения информации о том, как вызвать его из командной строки.

Итак, я видел, как вы отправляете этот инструмент командной строки вместе с приложением (просто убедитесь, что дважды проверили лицензию на перераспределение вубедитесь, что все в порядке) и в вашем MSI (или какой-либо другой утилите) есть специальное действие, которое выполняет его, чтобы применить изменения базы данных.А также проверьте зависимости для инструмента командной строки, я знаю, что для этого требуются объекты SMO SQL, собственный клиент SQL и, возможно, несколько других вещей.Вы должны убедиться, что MSI включает их в качестве предварительных условий.

...