Вопрос

Я ищу способ проверить схему SQL в рабочей базе данных после обновления версии приложения.Если приложение не соответствует версии схемы базы данных, должен быть способ предупредить пользователя и перечислить необходимые изменения.

Есть ли инструмент или фреймворк (для программного использования) со встроенными функциями для этого?Или есть какой-то простой алгоритм для выполнения этого сравнения?

Обновить: В списке Red gate указано "от 395 долларов".Есть что-нибудь бесплатное?Или более надежный вариант, чем просто сохранение номера версии?

Это было полезно?

Решение

Попробуйте этот SQL.
- Запустите его для каждой базы данных.
- Сохранить вывод в текстовые файлы.
- Различать текстовые файлы.

/* get list of objects in the database */
SELECT name, 
       type 
FROM  sysobjects
ORDER BY type, name

/* get list of columns in each table / parameters for each stored procedure */
SELECT so.name, 
       so.type, 
       sc.name, 
       sc.number, 
       sc.colid, 
       sc.status, 
       sc.type, 
       sc.length, 
       sc.usertype , 
       sc.scale 
FROM   sysobjects  so , 
       syscolumns  sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.name

/* get definition of each stored procedure */
SELECT so.name, 
       so.type, 
       sc.number, 
       sc.text 
FROM   sysobjects  so , 
       syscomments sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.number 

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

Я надеюсь, что смогу помочь - эту статью я предлагаю прочитать:

Автоматическое сравнение схем баз данных SQL Server

В нем описывается, как можно автоматизировать процесс сравнения и синхронизации схем SQL Server с помощью T-SQL, SSMS или стороннего инструмента.

Вы можете сделать это программно, заглянув в словарь данных (sys.objects, sys.columns и т. д.) обеих баз данных и сравнив их. Однако есть и такие инструменты, как Redgate SQL Compare Pro , которые делают это для вы. Я несколько раз указывал это как часть инструментария для обеспечения качества в системах хранилищ данных, включая тот, над которым я сейчас работаю. На моем нынешнем концерте это не было проблемой, так как администраторы здесь уже использовали его.

Основная методология использования этих инструментов - поддерживать эталонный скрипт, который создает базу данных, и поддерживать его в управлении версиями. Запустите скрипт в базу данных с нуля и сравните его с вашей целью, чтобы увидеть различия. Он также сгенерирует патч-сценарии, если вы так склонны.

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

Теперь вы можете бесплатно использовать мою SQL Admin Studio , чтобы запускать Сравнение схем , Сравнение данных и синхронизировать изменения. Больше не требуется загружать лицензионный ключ здесь http://www.simego.com/Products/ SQL-Admin-Studio

Также работает с SQL Azure.

[ОБНОВЛЕНИЕ: Да, я являюсь автором вышеуказанной программы, поскольку она теперь бесплатна. Я просто хотел поделиться ею с сообществом]

Если вы ищете инструмент, который может сравнить две базы данных и показать разницу между ними, Red Gate делает Сравнение SQL

Вы не упомянули, какую RDMBS вы используете: если в вашей RDBMS доступны представления INFORMATION SCHEMA и если вы можете ссылаться на обе схемы с одного хоста, вы можете запросить представления INFORMATION SCHEMA, чтобы определить различия в: -tables -columns типы столбцов ограничения (например, первичные ключи, уникальные ограничения, внешние ключи и т. д.)

Я написал набор запросов именно для этой цели на SQL Server для прошлой работы - он хорошо работал для выявления различий. Многие из запросов использовали LEFT JOINs с IS NULL для проверки отсутствия ожидаемых элементов, другие сравнивали такие вещи, как типы столбцов или имена ограничений.

Это немного утомительно, но это возможно.

Я нашел этот маленький и бесплатный инструмент, который соответствует большинству моих потребностей. http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html

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

Это небольшая бесплатная утилита, которая показывает различия в схемах:)

Составьте таблицу и сохраните там номер вашей версии. Просто убедитесь, что вы обновляете его по мере необходимости.

CREATE TABLE version (
    version VARCHAR(255) NOT NULL
)
INSERT INTO version VALUES ('v1.0');

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

Что это за СУРБД и насколько сложны потенциальные изменения?

Может быть, это просто вопрос сравнения количества строк и индексов для каждой таблицы - если у вас есть версии триггеров и хранимых процедур, о которых нужно также беспокоиться, вам нужно что-то более промышленное

Попробуй Сравнение данных dbForge для SQL Server.Он может сравнивать и синхронизировать любые базы данных, даже очень большие.Быстро, легко, всегда дает правильный результат.Попробуйте его в своей базе данных и прокомментируйте продукт.

Мы можем порекомендовать вам надежный инструмент сравнения SQL, который обеспечивает в 3 раза более быстрое сравнение и синхронизацию табличных данных в ваших базах данных SQL Server.Это сравнение данных dbForge для SQL Server.

Основные преимущества:

  • Более быстрое сравнение и синхронизация больших баз данных
  • Поддержка собственных резервных копий SQL Server
  • Пользовательское сопоставление таблиц, столбцов и схем
  • Множество опций для настройки вашего сравнения и синхронизации
  • Создание отчетов о сравнении и синхронизации

Плюс бесплатная 30-дневная пробная версия и безрисковая покупка с 30-дневной гарантией возврата денег.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top