| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Сравнение содержимого БД |
| Автор: D_EMO_N 21.1.2008, 14:34 |
| MS SQL Server 2000 Я подозреваю что в Enterprise Managere должна быть такая ф-ция, подскажите плс.. У меня есть 2 БД, на 2х разных компьютерах (они связаны сеткой, т.е. могу с одного менеджера видеть обе БД) Как мне сделать полное сравнение этих 2х баз? Т.е. имя у них одинаковое, но кол-во таблиц и их содержимого (что оч.важно) отличается, и надо сравнить ф-ции и сторед процедуры. Вот главно что надо сравнить: процедуры, функции и структуру таблиц |
| Автор: Deniel_li 21.1.2008, 17:25 |
| в Enterprise Managere помоему такой возможности нет |
| Автор: D_EMO_N 21.1.2008, 17:32 |
| А где есть и как это можно осуществить? |
| Автор: Deniel_li 23.1.2008, 15:07 |
| Программ не знаю, но таблицы, к примеру, можно сравнить и самому все объекты храняться в sysobjects, поля таблиц храняться в syscolumns |
| Автор: Magnifico 23.1.2008, 15:25 |
| в 2005 так в 2000 незнаю будет работать. Процедуры и функции определить существование так SELECT * FROM sys.sql_modules JOIN sys.objects ON sys.sql_modules.object_id = sys.objects.object_id where sys.objects.name = 'ИмяПроцедурыИлиФункции' как сравнить их по исходному коду таблица sys.sql_modules имеет поле definition которое содержит Полный исх. код проц. или функ. |
| Автор: D_EMO_N 23.1.2008, 17:35 |
| Вот помоему лучший ответ на мой вопрос: в Enterprise Managere есть такая ф-ция: Tool->Generate SQL Script-> и там уже выбрать сделать скрипт таблиц, ф-ций и представлений, скрипт создать не в 1 файл(по дефолту) а в несколько. Зделать это для 2х баз в разные папки (1 и 2). и потом в Total Commandere открыть эти папки, там есть ф-ция сравнить каталоги: в результате можно будет увидеть где какие таблицы есть, где их нет. +если есть процедуры с одинаковым именем но отличающиеяся по содержанию (1- Select *, 2я - Select * Where X=1). Добавлено через 1 минуту и 23 секунды Остался только вопрос как сравнить поля в таблице... но это уже другой вопрос и в другой теме... не отвечают там(( |