|
|
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Всем привет! Нависла проблема - надо сравнить CONSTRAINS в двух БД. Эти БД по структуре одинаковые, но Вася Пупкин, решил когда-то попить кофе,а заодно освободить таблицы от противных Констрейнов... Вася уже не помнит что такие Констрейны, но востановить их все же надо...и при чем - мне:(( Если сравнивать имена, то ничего не видно - у них есть ID. Как я понимаю - это какие-то системные ID и нет смысла их сравнивать... тем более, когда мне придеться восстанавливать CONSTRAINS после получения информации о разности... Была идея сравнить CONSTRAINS_KEYS вместо NAMES, но боюсь, что информации о том на куда их вешать тоже не получиться...А если и получиться, так только способом перебора всех по одной таблиц...:-0 Вопрос - нельзя ли каким-нибудь боком или раком сравнить констрейны и получить инфу с образцовой БД (на которой констрейны сохранились) на чем они навешены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2002, 18:29:57 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
sp_help для обоих таблиц .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2002, 18:41:08 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
данный запрос Код: plaintext 1. 2. 3. 4. 5. выдаст наверное слишком много информации, но много, не мало, можно и убрать ненужное например вывести только PRIMARY KEY констрайнты Код: plaintext 1. 2. 3. 4. или только связки PK_FK Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2002, 18:47:28 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
а если таблицы на разных серверах, то через INFORMATION_SCHEMA не очень то получиться, так как имена в схеме имеют идентификационный номер от сервера, в результате чего равными оказываються только некоторые из истинно равных...:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 19:35:09 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
"идентификационный номер от сервера" это OBJECT ID ? А причем здесь он ? Я так понял вы хотите для таблицы в одной базе(сервере) проверить какие констрайнты имеются у таблицы с таким же именем в другой базе(сервере) ? Или у вас и имена таблиц разные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 19:43:57 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Что-то вроде такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 19:59:49 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Поправочка Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2002, 20:10:24 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
1)И имена разные и сервера... 2) а про номер я имею в виду, что получаеться из INFORMATION_SCHEMA ключи типа FK_ANR_12345 и например тот же,но с другой базы FK_ANR_54321 :( PS: извеняюсь за молчание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 11:33:26 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
2 Irena Поставь себе Power Designer, потом в меню файл выбери Revers Engineer -> Database, сгенери по каждой базе свою модель, а затем в меню tools есть пункт Compare Models, в котором модели можно сравнить. Здесь же можно сгенерить скрипт, который поможет перенести отличия из одной базы в другую. И вообще Power Designer очень мощный инструмент, который облегчает жизнь как архитектору БД, так и DBA. З.ы. Все что я сказал можно конечно сделать и другими CASE средствами, просто я лучше всего знаю Power Designer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 12:07:55 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
1)И имена разные и сервера... Как обратится к другому серверу через OPENQUERY и linked server я вам вроде бы показал. Но если и имена таблиц, хранящих одни и те же данные, у вас на разных серверах разнятся, то тут IMHO никакая компьютерная логика не справится. Можно конечно составить таблицу соответсвий, т.е. какой таблице на первом серевере соответствует таблица на втором сервере. ключи типа FK_ANR_12345 и например тот же,но с другой базы FK_ANR_54321 - каждый констрайнт имеет уникальное имя в пределах базы - если вы не задаете это имя явно, то сервер генерирует его сам и для подстраховки добавляет в конец случайное число К тому же не пойму, зачем вам сравнивать по полному имени констрайнта, если можно сравнивать только по имени таблицы (пусть и через какой-то механизм разрешения имен) и количеству и именам входящих в констрайнт столбцов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 12:20:36 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Таблицы, слава богу, называються так же, но храняться на разных серверах в разно именованных базах... так,пока не запуталась, спрошу с другой стороны... Как сделать > ...если можно сравнивать только по имени таблицы (пусть и через какой-то механизм разрешения имен) и количеству и именам входящих в констрайнт столбцов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 12:40:25 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
by the way - thatnk You very much!!!!!! I already try first query from You...seems have only some linked server problems, but I think it is from my side is not ok:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 12:51:30 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
HELP! Процедура возвращает NULL для всего B сектора!!!! Не ругаеться ни на сервер_линкед ни на имя базы - похоже, что все находит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 14:34:57 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Показывайте ваш код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 17:32:50 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Да, немного я поменяла, а для моих сервров возвращает так, что толко по полному FULL JOIN можно догадаться, что работает...Или я что то не улавливаю про джоины....? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 18:35:19 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
ну раз у вас только базы именуются по-разному, а таблицы - одинаково то соединение по b.b_catalog = a.a_catalog можно опустить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. просто придется визуально следить чтобы каждый из запросов выбирал данные из нужной базы. Можно конечно и FULL JOIN использовать, но IMHO лучше(т.е. нагляднее для анализа) 2 запроса от "TEST1" LEFT OUTER JOIN "TEST2" и наоборот "TEST2" LEFT OUTER JOIN "TEST1" P.S. А нельзя поступить более радикально ? - заскриптовать все констрайнты в TEST1 - удалить все констрайнты в TEST2 - применить на TEST2 скрипт, полученный для TEST1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 18:50:12 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
и этого я не могу сама.... >- заскриптовать все констрайнты в TEST1 .... вернее я могу, конечно, ручками все...но ведь наверняка есть способ побыстрее.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2002, 20:09:23 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. и так для 2000 таблиц?[src][/src] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 16:07:34 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
1.Ну выберите в EM базу, на правой кнопке мыши есть пункт меню Generate SQL Script. В опциях можно убрать из скрипта собственно создание таблицы (т.е. никаких CREATE TABLE не будет). Выбираем в качестве объектов только таблицы и получаем скрипт сразу для всех Проблемы могут быть с тем, что в скрипте изменение таблиц идет в алфавитном порядке. А вот создавать констрайнты, особенно PK-FK нужно в заданном порядке. Но сам скрипт уже имеется, так что можно и поредактировать вручную. Не ахти, но все же 2. Кроме того, можно попробовать следующий вариант - делаем архив 2-ой базы (это на всякий случай) - выгружаем все данные через bcp или DTS в текстовые файлы - переносим из 1-ой базы стуктуры всех таблиц (через скрипт или опять же DTS) - добавляем в "новые" таблицы 2-ой базы данные из созданных ранее текстовых файлов через bulk insert без проверки констрайнтов Слабое место данного метода - если количество, типы и порядок столбцов в идентичных таблицах разных баз отличаются 3. Можно автоматизировать процесс скриптования. Все данные теоритически можно взять их системных таблиц. А в SQL-DMO вообще есть метод GenerateSQL. Можно написать приложение, которое будет генерировать скрипты. 4. Ну и конечно можно искать продукт от 3-ей фирмы (кажется jimmers недавно советовал что-то такое). Возможно даже чья-то evalution копия справится с вашей проблемой, ну тут 50 на 50 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 16:31:04 |
|
||
|
CONSTRAINS_KEYS better then CONSTARAINT_NAME???
|
|||
|---|---|---|---|
|
#18+
Вот так делала... Генерила скрипт н удаление другим скриптом, потом генерила скрипт из EM на создание(из образцовой базы) и применяла на испытуемой. Пришлось все ненужные из скрипта руками выбрасывать:( Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 13:55:42 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32037300&tid=1821576]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 388ms |

| 0 / 0 |
