2008-10-03 3 views
15

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

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

Обновление: Красные списки ворот "от $ 395". Что-нибудь бесплатное? Или более надежным, чем просто сохранить номер версии?

+0

Я изменил это и добавил тэг 'redgate' из-за преобладания ответов, предлагающих его. – ConcernedOfTunbridgeWells 2008-10-03 14:51:08

ответ

22

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

/* 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 
+0

Очевидно, что комплексный инструмент лучше, но это хороший быстрый и грязный метод! – Rory 2009-07-01 14:51:50

0

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

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

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

1

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

8

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

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

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

+0

Мы любим SQL Compare. Это сделало вещи очень легкими. – 2008-10-03 14:47:48

0

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

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

1

Вы не упомянули, которые RDMBS вы используете: если вид информационной схемы доступны в РСУБД, и если вы можете ссылаться на обе схемы с одного хоста, вы можете запросить мнения ИНФОРМАЦИЯ SCHEMA в идентифицировать отличия в: -tables -колонки -колонки типа -контракты (например,первичные ключи, уникальные ограничения, внешние ключи и т. д.)

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

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

0

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

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

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

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

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

4

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

Также работает против SQL Azure.

[UPDATE: Да, я автор вышеупомянутой программы, как это теперь Free я просто хотел поделиться им с сообществом]

1

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

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

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

9

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

Compare SQL Server database schemas automatically

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

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