Подтвердить что ты не робот

Как использовать проект базы данных SQL Server

Я запускаю SQL Server 2012 и VS 2010 с установленными SSDT (SQL Server Data Tools). Мой Dev DB использует хранимые procs, функции, объекты CLR и т.д. Он имеет моментальный снимок данных prod около 500 ГБ.

Я создал проект базы данных SQL Server, а затем импортировал базу данных. Это создало все таблицы, представления, procs и файлы функций под именами схем. Отличный материал - теперь я могу управлять версиями так же, как в других проектах VS, создавать развертывания и т.д. До сих пор так хорошо.

Но я смущен относительно того, каким должен быть мой процесс разработки для изменения/добавления procs/tables в SQL Server Database Project. Похоже, что любые изменения, которые я делаю, применяются к некоторой базе данных LocalDb/Projects, а НЕ к моей базе данных dev.

Я полагаю, что автор всех моих объектов в этом LocalDb, а затем создайте и разверните в мою базу данных dev через Publish? Я беспокоюсь о существующих таблицах в dev DB, поскольку, если процесс публикации упадет и воссоздает таблицы, я потеряю свой снимок данных prod.

Каков правильный процесс разработки в SQL Server Database Project?

4b9b3361

Ответ 1

Подумайте о исходной базе данных (в вашем случае, о проекте базы данных) как о состоянии "быть" после развертывания. Когда инициируется развертывание, исполняемый файл (SqlPackage.exe) сравнивает источник с целевым объектом и генерирует разницу/дельта script, чтобы цель выглядела как источник. Вот почему нам больше не нужно указывать CREATE или ALTER; инструмент показывает это. Чтобы ответить на ваш вопрос о текущем развитии, вы можете развиваться в любом случае. Вы можете разрабатывать файлы проекта и публиковать их в общей базе данных Dev (например, если вы работаете в команде), или вы можете разрабатывать в базе данных такие инструменты, как SQL Server Management Studio (SSMS) и синхронизировать с файлами проекта с сравнением схемы (я использую последний метод, потому что мне нравится SSMS).

Для развертывания вам нужно будет установить SSDT на машине, с которой вы выполняете развертывание (SSDT поставляется с SQL Server 2012 и более поздними версиями, я не знаю о SQL Server 2008). Вы можете создавать сценарии для упрощения развертывания. Вы по существу вызовите SqlPackage.exe(он живет в x:\Program Files (x86)\Microsoft SQL Server\nnn\DAC\bin) с действием и источником. Я также использую Publish Profiles, чтобы позаботиться о большинстве свойств команды. Таким образом, пример развертывания может выглядеть так:

SqlPackage.exe /Action:Publish /SourceFile:MyDatabase.dacpac /Profile:MyProfile.publish.xml

Для получения дополнительной информации: Документация по инструментам данных SQL Server http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

Документация SqlPackage.exe http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

Ответ 2

  • Внесите изменения в проект VS DB.

  • Развертывание изменений в localDB для проверки

  • Публикация базы данных на ваш производственный сервер. Я предпочитаю использовать Schema Compare, чтобы сделать это вручную, но вы также можете опубликовать проект через меню правой кнопки мыши → публикация (который также будет создавать профиль публикации) или с помощью аргументов командной строки. Процесс публикации не будет падать и создавать таблицы (если вы не сообщите ему, чтобы они сбросили и воссоздали весь db).

В качестве альтернативы, в настройках проекта вы можете изменить строку подключения, чтобы указать на ваш производственный сервер (как указано в комментарии). Тем не менее, я рекомендую против этого, так как он будет затем публиковать на производственном сервере каждый раз, когда вы запускаете локальную сборку (F5).