База данных снова под контролем версий!

Мы используем MS SQL Server и C#. Наша база данных находится под контролем источника, и я расскажу вам некоторые детали нашей реализации. Мы реализовали две операции:

  1. Экспорт базы данных в текстовые файлы. Файлы схемы базы данных: table.sql Relations.sql views.sql ... и файлы содержимого таблицы: Data / table1.txt Data / table2.txt ... Изменения в базе данных легко просмотреть с помощью журналов системы управления версиями, потому что все эти файлы имеют простой текстовый формат. Реализация основана на классах из пространства имен Microsoft.SqlServer.Management.Smo.

  2. Импортируйте базу данных из этих текстовых файлов. Реализация проста - просто выполните инструкции sql из файлов * .sql, а затем выполните несколько вставок.

Итак, у нас есть два bat-файла: create-test-databse.bat и export-test-database.bat. Когда разработчику нужна новая тестовая база данных, он просто запускает bat-файл и ждет минуту. Каждый функциональный тест, которому нужна база данных, создает новую базу данных, использует ее, а затем уничтожает. Но надо сказать, что это не очень быстрая операция. :(

Итак, какие инструменты ВЫ используете, чтобы поставить свою базу данных под контроль версий? Я имею в виду, например, как реализовать операции «создать тестовую базу данных» и «экспортировать тестовую базу данных»?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
382
3

Ответы 3

Мы используем Visual Studio для специалистов по базам данных. Не выходи из дома без него.

Я использую VSTS для БД Профи. Вы указываете ему свой SQL-сервер, и он анализирует вашу базу данных и создает для вас отдельные файлы. Вы даже можете заставить его генерировать для вас тестовые данные. Следующий выпуск будет включать поддержку сторонних поставщиков (например, Oracle, MySQL, DB2).

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

Я думаю, вы задаете здесь два вопроса. Во-первых, как поставить вашу базу данных под контроль версий. Ваше решение интересно, и я также использовал Visual Studio Team Edition для специалистов по базам данных (вот учебник, который я написал по TDD хранимых процедур, используя его)

Во-вторых, как настроить базу данных для интеграционных тестов. Настройка и удаление всей базы данных кажется излишним. Есть несколько решений. Я использовал DBFit. Рой Ошеров недавно опубликовал инструмент под названием XtUnit, с которым я еще не играл. И, конечно же, вы всегда можете настроить свои тесты на запуск транзакции в SetUp и откат во время разрыва.

Другие вопросы по теме