2015-01-21 2 views
1

Моя компания заставляет меня задуматься о переходе от нашего текущего метода управления базами данных, которые использует наше программное обеспечение. Нам нужно не только управлять базами данных внутри офиса, но и базами данных клиентов по всей стране. В настоящее время у нас есть программа, которая запускает различные сценарии sql для добавления, удаления и обновления полей и таблиц в базах данных, но это начинает становиться большим и громоздким.Как обновить/распределить проекты базы данных SQ Server?

Мне было поручено исследовать проекты базы данных SQL Server, и, что касается создания новой базы данных, она выглядит великолепно. Однако я не могу найти много информации о том, как мы можем распространять обновления для наших клиентов, используя это (они запускают собственные SQL-серверы на сайте), так что они имеют последние таблицы и информацию о схеме, чтобы соответствовать изменениям и добавленной функциональности в нашей программы. Есть ли способ сделать это?

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

ответ

1

Я предлагаю вам использовать SqlPackage.exe для развертывания на клиентских компьютерах. Общий процесс: Импорт существующей базы данных в проект SQL. Получите это здание .dacpac, который содержит все изменения схемы, плюс пишите сценарии до/после развертывания, необходимые для управления вашими данными по мере необходимости. Затем вместо использования Schema Compare используйте публикацию для обновлений базы данных. В VS есть опция «Опубликовать» в проекте, а SqlPackage.exe - это инструмент командной строки, который имеет соответствующие функциональные возможности.

Есть два преимущества этого подхода:

  1. Полный публикующие гарантирует, что целевая база данных фактически обновляется, чтобы соответствовать схеме проекта. Если вы создаете сценарии (используя Schema Compare/Publish) для одного БД, тогда попробуйте применить к другой БД, вы должны надеяться, что они имели ту же самую схему заранее. Если вы фактически запускаете «Опубликовать/Генерировать сценарий» на реальном целевом сервере, вы гарантируете, что то, что применяется, - это то, что вы ожидали.
  2. SqlPackage полезен в ситуациях, когда вы не можете установить что-либо на клиентской машине. Это связано с тем, что вы можете скопировать все необходимые библиотеки DLL в одну папку (возьмите файл SqlPackage.exe и другие файлы в той же папке, а также Microsoft.SqlServer.TransactSql.ScriptDom.dll и Microsoft.SqlServer.Types.dll из C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ SDK \ Assemblies) и использовать это из любого места. Вы можете поместить его на флэш-накопитель или скопировать его как .zip-файл.
+0

Я хочу убедиться, что понимаю. Я имею базовую базу данных sql, которая содержит все статические данные и имеет правильную схему как проект SQL. У меня есть клиент, у которого есть база данных на своем сервере, которая нуждается в обновленной схеме и статических данных. Каким будет мой процесс для использования SQLPackage? Я создаю свой SQL-проект и получаю файл dacpac. Затем, на клиентской машине, я бы запускал SqlPackage с некоторыми параметрами, которые я предполагаю, некоторые указывают на dacpac и другие на базу данных/сервер? Если бы вы могли прояснить/исправить этот общий процесс, вы стали бы еще более жизнеспособной, чем вы уже сделали. – downeysyndrome

+0

Исправить. Вот блог, объясняющий развертывание с помощью SqlPackage.exe: http://blogs.msmvps.com/deborahk/deploying-a-dacpac-with-sqlpackage. Для статических данных рекомендуется написать сценарий после развертывания, который объединяет эти данные в таблицы (например, делает его idempotent таким образом, чтобы множественные развертывания не испортили данные). Jamie Thomson имеет примеры этого в этом сообщении в блоге: http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/01/implementing-sql-server-solutions-using-visual-studio-2010-database-projects -a-сборник-оф-проект-experiences.aspx. –

+0

Также здесь страница документа SqlPackage.exe - полезно, поскольку она объясняет различные параметры, необходимые для публикации/скрипта https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx –

0

Попробуйте сравнить данные SQL Server с инструментами данных (SSDT) ​​+ TFS +. Он автоматически создает сценарии обновления схемы. У этого есть некоторые проблемы со связанными серверами и перекрестная база данных, но до сих пор я пробовал все, что можно решить в некотором роде. Другое дело - управление Redgate Source. Очень легкий и интуитивный. Однако это требует дополнительных денег.

+0

Как мы будем использовать что-либо похожее на сравнение схемы с базой данных, у нас может быть только доступ к RDP в лучшем случае? В настоящее время приложение, о котором я упоминал, загружается клиентом через наш веб-сайт или FTP, а затем запускает его, где он будет запускать различные сценарии SQL. Все клиенты, возможно, не запускали предыдущие обновления, поэтому, к сожалению, мы не можем просто основывать это на нашей текущей базе данных внутри офиса. – downeysyndrome

+0

использование версия управление TFS, Git, CVS, SVN. Кто угодно. Затем возьмите его через RDP на свой сервер и сравните. –

0

Как правило, вы сохраняете версию базы данных предыдущей версии и сравниваете схему с этой версией, а затем сохраняете ее как .SQL-файл. Затем клиент может запустить комбинацию из нескольких файлов .sql, чтобы довести их до последней версии (но они не могут понизить этот путь).

В качестве альтернативы, ознакомьтесь с Entity Framework Migrations https://msdn.microsoft.com/en-gb/data/jj591621.aspx, они дают вам возможность контролировать как обновленную схему, так и вставлять записи, а также при необходимости откатывать/понижать.

0

Вот такой способ, если вы решите использовать инструменты Redgate.

  1. Запустить Snapper по вашей базе данных клиентов. Это бесплатный инструмент, который принимает моментальный снимок схемы вашей базы данных клиентов. Это создает двоичный файл, который содержит только информацию о схеме.

  2. Скопируйте этот файл схемы в локальную среду. Используйте SQL Compare, чтобы сравнить вашу базу данных разработки (при условии, что это источник вашего обновления) для моментального снимка схемы (целевой). Это создаст файл развертывания SQL, который будет настроен для вашего клиента.

  3. Скопируйте файл развертывания SQL в среду клиента и выполните его.

Если вам нужна дополнительная помощь, оставить комментарий к этому ответу или отправить вопрос на our forum. Мы будем рады помочь.

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