Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 секунды
Остался только вопрос как сравнить поля в таблице... но это уже другой вопрос и в другой теме... не отвечают там((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)