|
|
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
IS it posible to create a Foreigner Key between 2 Servers...when the so called "PK table" is situated on the one server and the "FK-table" is on the another server? PS: Sorry for non Russian Texs -have no coding:( answer is good in every languages!!!:) (tipo po russki):Vozmogno li sozdat^ FK megzdu dvuh baz dannyh, kogda odna tablica na odnom servake, a vtoraja na drugom? ThanX! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 18:10:13 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Вообще-то MS SQL Server 2000 не поддерживает внешние ключи даже между базами одно сервера. Соответствующее сообщение: Cross-database foreign key references are not supported. Думаю, что для серверов ситуация не лучше. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 18:39:29 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
:) Mlin! A kak mogno oboiti? Naprimer bylo predlogenije usat^ View...View delaetsa s udalennoi tablicy na nash server i uge na nashem servere soedinjaetsa s zavisimoi tablicei....Ne katit - ne daet sozdat^ FK s VIew:( Glupo, konechno takie kluchi sozdavat^, no poka dokazat^ eto bossy ne mogu:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 19:19:56 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Это не будет называться Foreign Key. Это trigger-based referential integrity. То есть на каждой таблице создается триггер, который проверяет наличие записи в другой при удалении, вставке или update. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 19:57:23 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
OK! Lets image situation... For to split one database into several servers, we place separate data for different users on separate servers...Only one problem -what to do with Login/Password data tables? Leave them in one server and every time start the triggers when user change something? Or there is more beautiful decision? In BOL there is something about Designing Partitions...:) Don’t work in practice:) I only feel that the problem is in a bad design from the beginning:(... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 21:01:39 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
На самом деле я такую проблему решаю таким образом. Конечно это работает только для не сильно транзакционных таблиц - для так называемых словарей. Создается отдельная база данных, в которой хранится информация о - названии master table, ее местонахождении, и о том, в какие базы данных и на каких серверах распространять данные. Дальше - я создал систему, которая читает эту таблицу и при появлении в этой таблице записи о новой базе - подписчике а) создает в указанной базе немного переименованную копию распространяемой таблицы, содержащую только первичные ключи. б) обновляет триггер на master table таким образом, чтобы при попытке удаления записи с него предварительно внутри транзакции были удалены аналогичные записи с таблиц - подписчиков. В случае если возникает любая ошибка - процес откатывается. в) создает триггер на новой таблице - подписчике таким образом, что прежде, чем удалить запись из нее - имеет место попытка удалить внутри транзакции аналогичную запись из master table. В случае невозможности этой операции - выдается ошибка и транзакция откатывается. г) создает view с аналогичным master table именем для просмотра данных Несколько громоздко описано, но в деле работает на ура. Время от времени робот проверяет на предмет того, а не надо ли обновить процедуры повсюду. Внутри же любой другой базы - подписчика Foreign Key идет на локальную таблицу - зеркало с сохранением Referential Integrity. Чем-то напоминает репликацию, но конечно не совсем полностью. --- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 21:32:02 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
А merge репликация отцам российской демократии не поможет? У меня именно так все справочные данные тиражируются - все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 21:41:15 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Когда речь идет о простой синхронизации - конечно - репликация - прекрасный механизм, тем более, что ничего особенно писать не надо. Но любая репликация - асинхронна. То есть происходит удаление записи в одной базе данных и если в локальной базе на эту запись никто не ссылается, то ошибки не возникает. Ошибка пожалуй возникнет во время синхронизации, но это будет невидно для процесса, который удалял запись. Вопрос же в топике был поставлен именно о сохранении referential integrity, а не о тиражировании. Так что наверное отцам российской демократии репликация поможет, а нам, скромным буржуазным труженикам - везде приходится искать нетривиальные пути :) -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 22:39:19 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Ну, откровенно говоря, триггеры в таком случае тоже не помогут - это ж надо на N серверах проверить при удалении нету ли там ссылок на запись - процесс довольно сложный и медленный - по правильному данные на всех серверах блокировать надо на время проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 22:51:21 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Я же говорил, что это хорошо работает для справочников, которые на интенсивно обновляются. На самом деле, конечно все только кажется таким страшным. Когда процесс создания стандартных триггеров автоматизирован - все просто. Процесс изменения тоже достаточно быстр. Кстати - триггеры включаются только на удаление и вставку - во все остальное время - они молчат. Конечно, если таблицу модифицируют сотни пользователей 24/7, то эта схема неприемлема. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 23:03:09 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
2 Slon OK, we created the server, we have 2 kind of data - Master data and Filials data. In practice - it is every time so, that every filial create some COLATIONS with Master tables copy.(ta samaja nemnogo pereimenovanaja tablica kak znachitsa u vas). Replicatio in this case have crash, cause it is imposible to DELETE or UPDATE anythin in the table, which have dependencies... From the other side - there is no way to controll the errors of replication inside of transactiojn...or is it????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2002, 17:14:16 |
|
||
|
FK between diffrent Servers?
|
|||
|---|---|---|---|
|
#18+
Ирина, Предположим у вас есть схема: Master SQL Server Name: MASTER_SRV Filial SQL Server Name: FILIAL_SRV Оба сервера имеют друг друга зарегистрированными как linked servers с достаточным набором прав на доступ друг к другу. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Код: 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. Что-то вроде такого должно получиться. Если будут ошибки по синтаксису, я не виноват. Набросал пример в рабочее время в перерывах между митингами. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2002, 00:59:14 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3461&tid=1822154]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 270ms |

| 0 / 0 |
