Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 сравнение баз в разных сетках  [new]
Baxster
Member

Откуда:
Сообщений: 20
Доброго времени суток, возникла проблема сравнения метаданных в базах, которых находятся в разных локальных сетях и не имеют доступа друг к другу. Базы MS SQL 2005.
Есть идея считывать структуру одной базы и сравнивать ее программно с другой базой.
Вопрос: где прочесть про считывание метаданных о таблицах? Есть ли какие наработки по таким вещам?

З.Ы. Находил много разных программ, которые сравнивают таблицы на разных серверах, но условие, что они доступны оба с текущего компа. В данном случае, такой доступности нет.
22 авг 11, 10:04    [11154985]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Glory
Member

Откуда:
Сообщений: 104751
Baxster
но условие, что они доступны оба с текущего компа. В данном случае, такой доступности нет.

А что вы тогда собрались сравнивать ? Как вы собрались "Есть идея считывать структуру одной базы", если они "находятся в разных локальных сетях и не имеют доступа друг к другу" ?
22 авг 11, 10:34    [11155136]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
aleks2
Guest
Baxster
З.Ы. Находил много разных программ, которые сравнивают таблицы на разных серверах, но условие, что они доступны оба с текущего компа. В данном случае, такой доступности нет.

Если гора не идет к Магомету, Магомет идет к горе.

Ну дык, принесите одну из баз "поближе" к другой. Бэкап/ресторе и копирование файлов на флешку освоили?
22 авг 11, 10:38    [11155160]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Baxster
Member

Откуда:
Сообщений: 20
Glory
Baxster
но условие, что они доступны оба с текущего компа. В данном случае, такой доступности нет.

А что вы тогда собрались сравнивать ? Как вы собрались "Есть идея считывать структуру одной базы", если они "находятся в разных локальных сетях и не имеют доступа друг к другу" ?


1) читаем структуру эталонной базы
2) сохраняем на флешку файл, который программа сможет распознать далее
3) открываем файл на том компе, который видит второй сервер
4) делаем сравнение и добавляем нужные колонки, таблицы и хранимки с функцими (исправляем их по необходимости)

главный вопрос: как считать метаданные с необходимой мне базы и сделать сравнение?
22 авг 11, 10:40    [11155179]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Glory
Member

Откуда:
Сообщений: 104751
Baxster
главный вопрос: как считать метаданные с необходимой мне базы и сделать сравнение?

Запросом к системным таблицам ? Которые описана в хелпе в разделе Querying the SQL Server System Catalog FAQ ?
22 авг 11, 10:43    [11155214]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
aleks2
Guest
Baxster
Glory
пропущено...

А что вы тогда собрались сравнивать ? Как вы собрались "Есть идея считывать структуру одной базы", если они "находятся в разных локальных сетях и не имеют доступа друг к другу" ?


1) читаем структуру эталонной базы
2) сохраняем на флешку файл, который программа сможет распознать далее
3) открываем файл на том компе, который видит второй сервер
4) делаем сравнение и добавляем нужные колонки, таблицы и хранимки с функцими (исправляем их по необходимости)

главный вопрос: как считать метаданные с необходимой мне базы и сделать сравнение?


О! Человек не ищет лехких путей.

Ну тады

1. Скриптуем базы штатно из SMS.
2. Загружаем для КАЖДОЙ базы текст скриптов в MS WORD.
3. Сортируем строки ПО АЛФАВИТУ. Пугаться получившейся херни не нада. Сохраняем.
4. Задействуем MS WORD фишку: сравнение версий файлов.
22 авг 11, 10:59    [11155355]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
truper
Member

Откуда:
Сообщений: 106
Не думайте что рекламирую, но мы собираемся пользоваться EMS DB Comparer for SQL Server

Лицензия стоит около 100$

Проверяли, понравилось. Есть триалка.
22 авг 11, 11:03    [11155398]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
truper
но мы собираемся пользоваться EMS DB Comparer for SQL Server


Аналогично (но лучше ) и у редгейта есть:

SQL Compare Pro - если сравнить схемы таблиц
SQL Data Compare Pro - если сравнить данные таблиц
22 авг 11, 11:27    [11155610]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
aleks2
Baxster
пропущено...


1) читаем структуру эталонной базы
2) сохраняем на флешку файл, который программа сможет распознать далее
3) открываем файл на том компе, который видит второй сервер
4) делаем сравнение и добавляем нужные колонки, таблицы и хранимки с функцими (исправляем их по необходимости)

главный вопрос: как считать метаданные с необходимой мне базы и сделать сравнение?


О! Человек не ищет лехких путей.

Ну тады

1. Скриптуем базы штатно из SMS.
2. Загружаем для КАЖДОЙ базы текст скриптов в MS WORD.
3. Сортируем строки ПО АЛФАВИТУ. Пугаться получившейся херни не нада. Сохраняем.
4. Задействуем MS WORD фишку: сравнение версий файлов.

Особое веселье начнется, когда, допустим, в разных таблицах есть одноименные столбцы.
22 авг 11, 11:51    [11155795]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
aleks2
Guest
[quot invm]
aleks2
Особое веселье начнется, когда, допустим, в разных таблицах есть одноименные столбцы.


Ну, знаете, вам ишо и рыбу почищенную подавай!

ЗЫ. Если они савсем одинаковые - какая разница. Если не савсем - это будет видно.

ЗЗЫ. При некоторой сноровке в MS Word, можно провести сравнение и более вменяемо.
22 авг 11, 12:00    [11155875]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
aleks2,

Ну да, будет видно, если отличаются. Только не будет видно в какой таблице.
22 авг 11, 12:02    [11155896]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
aleks2
Guest
invm
aleks2,

Ну да, будет видно, если отличаются. Только не будет видно в какой таблице.

Какой ты скучный. Поиском не обучен пользоваться?
22 авг 11, 12:08    [11155955]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
1. Скриптуем обе БД штатными средствами SSMS, не забыв выставить одинаковые опции скриптования и выбрав режим "Single file per object"
2. Натравливаем на полученные файлы утилиту типа md5sums
3. Где хеш одноименных файлов не совпадет, там есть различия.
22 авг 11, 12:50    [11156316]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Baxster
Member

Откуда:
Сообщений: 20
invm
1. Скриптуем обе БД штатными средствами SSMS, не забыв выставить одинаковые опции скриптования и выбрав режим "Single file per object"
2. Натравливаем на полученные файлы утилиту типа md5sums
3. Где хеш одноименных файлов не совпадет, там есть различия.


данный вариант очень понравился, но вот досада.. нет возможности выбрать данный пункт на втором сервере :(
не понятно почему там он не отображается

Если кому интересно, что я искал, так это примерно такой код:
select *
from  INFORMATION_SCHEMA.VIEWS

select c.*
from  INFORMATION_SCHEMA.TABLES t
 join INFORMATION_SCHEMA.COLUMNS c on  c.TABLE_NAME = t.TABLE_NAME
where TABLE_TYPE = 'BASE TABLE'
order by t.table_name

select *
from  INFORMATION_SCHEMA.VIEWS

SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
order by ROUTINE_TYPE, ROUTINE_NAME
может кому пригодится
23 авг 11, 11:32    [11162470]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Baxster
Member

Откуда:
Сообщений: 20
Вопрос был решен практически полностью, но в процессе работы выяснились некоторые недостатки:
выполняя данный запрос:
SELECT     ROUTINE_NAME , ROUTINE_BODY , ROUTINE_DEFINITION , ROUTINE_TYPE
FROM         INFORMATION_SCHEMA.ROUTINES
я получаю в столбце ROUTINE_DEFINITION исходный текст процедуры, но данный текст ограничивается количеством символов равным 4000. Обнаружилось это как раз с процедурой, у которой количество символов больше, чем данное значение.

а теперь вопрос: как получить исходник процедуры (функции), у которой большое число символов в коде?
30 авг 11, 10:32    [11199175]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Функцией object_definition
30 авг 11, 10:41    [11199209]     Ответить | Цитировать Сообщить модератору
 Re: сравнение баз в разных сетках  [new]
Baxster
Member

Откуда:
Сообщений: 20
invm
Функцией object_definition

спасибо, за оперативный ответ
30 авг 11, 10:54    [11199276]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить