В настоящее время я использую Tortoise SVN для управления исходным кодом веб-приложения .NET. Как лучше всего перенести хранимые процедуры SQL Server в систему управления версиями? В настоящее время я использую VS 2010 в качестве среды разработки и подключаюсь к внешней базе данных SQL Server 2008 R2 с помощью средств данных SQL Server (SSDT).
В прошлом я занимался сохранением процедур в файл .sql и сохранением этих файлов под контролем исходного кода. Я уверен, что должен быть более эффективный способ, чем этот? Есть ли расширение, которое я могу установить на VS2010, SSDT или даже SQL Server на рабочем компьютере?
Ответы:
Есть инструменты, такие как Redgate , но я всегда обнаруживал, что лучше всего сохранять их в виде файлов SQL, возможно, даже в проекте базы данных (SSDT?) В вашем решении.
Наряду с этим, я предлагаю следующие рекомендации:
if exists then drop
" в началеПервоначально вы можете создавать эти файлы SQL, создавая сценарии непосредственно из SSMS, и вы можете настроить SSMS для сценариев всех ваших «
drop
» и «create
», а также ваших разрешений.источник
Сохранение файлов SQL в системе контроля версий обеспечивает контроль только над файлами SQL. Он не контролирует изменения реальных объектов базы данных и не предотвращает одновременные изменения одного и того же объекта базы данных несколькими пользователями (и я думаю, вы хотели бы также контролировать это). Мы используем сторонний инструмент ( ApexSQL Version), он интегрируется как с SSMS, так и с VS, вы можете выбрать, работать ли с версией объекта в базе данных или с версией Source Control. Если вы редактируете версию базы данных, она автоматически проверяется только вами, поэтому никто другой не может ее редактировать (она не объединяет изменения от разных пользователей). Только когда вы зарегистрируете его снова, другие могут его изменить. И вы можете иметь свою версию SC, отличную от версии живого объекта (я использую ее, когда ухожу на день и планирую закончить правки и проверить ее на следующем)
источник
Используйте RedGate Source Control, чтобы подключить его к вашему контролю исходного кода.
http://www.red-gate.com/products/sql-development/sql-source-control/
Он подключит вашу SSMS непосредственно к вашему репозиторию управления исходным кодом и даже позволяет проверять статические данные.
Работает как шарм
источник
Попробуйте Ankhsvn , очень рекомендуется и бесплатно.
С домашней страницы:
источник
Я пробовал RedGate и проект базы данных Visual Studio, и я предпочитаю хранить определение базы данных в проекте базы данных. Как только база данных становится частью решения, вы можете использовать предпочитаемого поставщика системы контроля версий. Большинство из них имеют отличную интеграцию с Visual Studio.
С инструментами SSDT вы получаете «последнюю версию» определения базы данных, что позволяет вам легко сравнивать схемы и генерировать сценарии обновления схемы.
Тем не менее, схема, как правило, является лишь частью уравнения. В реальной жизни оказывается, что базы данных уже содержат много данных. И мои пользователи, как правило, разочаровываются, когда теряют его.
Поэтому, как только я развернул v1.0, возникла необходимость в поддержке сценариев обновления. Иногда они просто содержат изменения схемы, но во многих случаях мне нужно создавать значения по умолчанию на основе содержимого какой-либо другой таблицы, нужно снимать определенное ограничение до тех пор, пока я не заполню данные и т. Д. Обычно простое обновление схемы не совсем обрезает ее. Я предпочитаю, чтобы эти сценарии обновления находились в отдельной папке в проекте базы данных. Обычно это выглядит как «обновление с версии 1.0 до версии 1.1».
В моих базах данных всегда есть справочная таблица, в которой указан текущий номер версии, поэтому я могу заблокировать несовместимые обновления. Первое утверждение в моих скриптах обновления проверяет текущую версию и выручает, если она отличается от ожидаемой.
Еще одним преимуществом проектов базы данных является возможность развертывания различных наборов данных на основе одной и той же схемы. У меня есть разные наборы данных для разработки, команды QA, проверки приемлемости для пользователей и для автоматизированных интеграционных тестов. Поскольку у проекта базы данных может быть только 1 сценарий после развертывания, задача состоит в том, чтобы создать новый проект базы данных, который ссылается на «главный» проект, и сделать настраиваемый набор данных частью процесса после развертывания этого проекта.
Это были мои 2 цента. Какой бы процесс вы ни предприняли, прежде всего, он должен соответствовать вам и вашей команде и, надеюсь, поддержать вас в большинстве общих задач.
источник
Я закончил писать инструмент сам.
Он доступен для бесплатного скачивания - http://www.gitsql.net
Я надеюсь, что это помогает другим людям, которые хотят достичь той же конечной цели.
Вот статья, которая описывает, как управлять исходным кодом SQL Server. http://gitsql.net/documentation-04_SQL_Server_and_GIT
Я пытался сделать это как можно проще. (3 экрана)
Я также - случайно - добавил возможность выбора отдельных объектов для импорта или экспорта. Что делает его намного проще во время разработки.
Я обычно вносил изменения в хранимую процедуру и таблицу, а затем экспортировал эти два объекта в каталог GIT.
Затем я использую дерево исходных текстов, чтобы визуально увидеть изменения, а затем зафиксировать их в bitbucket, если я счастлив.
источник
Моя компания только что разработала этот новый ( бесплатный ) инструмент, который помогает вам легко извлекать сценарии для баз данных SQL, может выполнять сравнение , может запускать WinMerge для быстрого сравнения сценариев с действующей базой данных, а также может синхронизировать различия как при обновлении сценариев, так и при применении изменений. в базу данных (за исключением таблиц, которые будут связаны с большей сложностью и большим риском).
Servantt - это WinMerge для сравнения баз данных SQL Server с управляемыми версиями сценариями.
Он поддерживает и поощряет лучшие практики в разработке программного обеспечения:
(*) Скрипты сохраняются в локальной папке, которая может быть рабочей копией Git, Subversion, TFS, Source Safe или любой другой VCS.
Скачать бесплатно: http://servantt.com
Профессиональная версия (которая все еще находится в стадии разработки) будет совершенно другим чудом - она предназначена для автоматизации развертывания (управления выпусками), для автоматизации таких задач, как обновление IIS, обновление служб Windows и т. Д.
источник